编写程序时,程序在某个特定目录中运行,该目录是当前工作目录。
我试图更多地了解cwd的想法。程序如何知道它的cwd是什么?该信息存储在哪里?
我非常清楚如何在python中使用os
模块,但我真的不明白拥有cwd意味着什么。它只是一个数据属性,“这就是我们所处的位置”,我们可以随意改变吗?我们只是在HD的特定部分寻找东西并创造东西?或者当我们改变cwd时,某种途径实际上是开启和关闭的,就像一扇门被关闭而另一扇被打开?
当我在程序中更改cwd时,计算机上发生发生什么?
这可能与语言无关,我不确定。
答案 0 :(得分:0)
当前工作目录(至少在大多数操作系统上)是进程的一个属性,所以是的,它或多或少是一个简单的属性,说明“这就是我们所处的位置”。由于它是进程的属性,因此由OS内核存储和管理。
可以通过调用例如任意改变它python中的os.chdir,每次运行内置cd
命令时,shell都会更改其工作目录。并且它们通常都会调用操作系统的相同API,例如chdir()。更改cwd受文件系统权限的限制,因此您只能将工作目录更改为实际存在且您具有权限的路径。
cwd也可能涉及文件操作,因为当进程打开不是绝对路径的文件路径时,文件名将相对于进程的cwd进行解析。
在unix系统上,cwd是从父进程继承的,因此从shell启动的进程的cwd将具有到启动进程时所在目录的cwd(而不是例如可执行的你开始。)