Operating system 一个程序如何在一个特定的位置上运行?

Operating system 一个程序如何在一个特定的位置上运行?,operating-system,working-directory,Operating System,Working Directory,在编写程序时,程序运行在一个特定的目录中,该目录是当前的工作目录 我正试图更多地了解cwd的概念。程序如何知道其cwd是什么?这些信息存储在哪里 我非常清楚如何在python中使用os模块,但我并不真正理解拥有cwd意味着什么。它仅仅是一个数据属性,“我们就在这里”,我们可以任意改变吗?我们只是在HD的特定部分寻找和创造东西?或者,当我们改变cwd时,是否有某种路径在主动地打开和关闭,比如一扇门关上,另一扇门打开 当我在程序中更改cwd时,计算机上会发生什么 这可能与语言无关,我不确定。当前工作

在编写程序时,程序运行在一个特定的目录中,该目录是当前的工作目录

我正试图更多地了解cwd的概念。程序如何知道其cwd是什么?这些信息存储在哪里

我非常清楚如何在python中使用
os
模块,但我并不真正理解拥有cwd意味着什么。它仅仅是一个数据属性,“我们就在这里”,我们可以任意改变吗?我们只是在HD的特定部分寻找和创造东西?或者,当我们改变cwd时,是否有某种路径在主动地打开和关闭,比如一扇门关上,另一扇门打开

当我在程序中更改cwd时,计算机上会发生什么


这可能与语言无关,我不确定。

当前工作目录(至少在大多数操作系统上)是进程的一个属性,因此是的,它或多或少是一个简单的属性,表明“这就是我们所处的位置”。因为它是进程的一个属性,所以它由操作系统内核存储和管理

它可以通过调用(例如在python中)进行任意更改,并且每次运行内置的
cd
命令时,a也会同样更改其工作目录。它们通常都会调用操作系统的相同API,例如()。更改cwd取决于文件系统权限,因此您只能将工作目录更改为实际存在的路径,并且您有权更改该路径

cwd还可能涉及文件操作,因为当进程打开一个不是绝对路径的文件路径时,文件名将相对于进程的cwd进行解析


在unix系统上,cwd是从父进程继承的,因此从shell启动的进程的cwd将在启动进程时将其cwd保存到您所在的目录中(而不是您启动的可执行文件的目录)。

操作系统跟踪cwd,操作系统API为您提供了一种查询方法。
os
模块对您隐藏了细节。我想您可以阅读这个老答案: