究竟拥有"当前工作目录"的是什么?

Sam*_*mer 5 language-agnostic operating-system platform-agnostic process working-directory

我知道什么是工作目录(wd),它的目的是(至少编写软件).

我不明白的是wd的所有权.此外,我想了解操作系统之间的答案可能有所不同,因此可以理解对特定操作系统上的异常行为的任何澄清.

首先,wd在哪里表现出来?它是否在一个进程中,并且该进程创建的所有线程共享相同的wd?如果wd被线程'A'修改,那么线程'B'的变化是否立即可见,这也是线程'A的进程产生的?

其次,wd最初是如何定义的?如果您从命令提示的东西它容易看到,但对于其派生几个方法相似?


注意:Process Explorer在其"属性"窗口中显示每个进程的"wd".

Pol*_*ial 4

在大多数现代操作系统上,工作目录是进程的一个属性。当父进程派生子进程时,它将(默认情况下)具有相同的工作目录。通常可以通过显式指定工作目录来覆盖此行为。

一旦分叉,子级的工作目录字段就独立于父级。父进程工作目录的更改不应改变子进程。复制与工作目录相关的任何句柄或安全令牌的行为高度依赖于操作系统。

在 Windows 上,向进程的内存CreateProcess添加一个结构,其中包含和。该结构始终加载在Windows 的现有 NT 版本上,但这在将来可能会发生变化。RTL_USER_PROCESS_PARAMETERSUNICODE_STRING CurrentDirectoryPathHANDLE CurrentDirectoryHandle0x20000