dsi*_*cha 4 filesystems multithreading operating-system d thread-local
当程序访问文件,使用system()
等时,该程序的当前工作目录的物理知识/存储方式和位置是什么?从逻辑上讲,程序的工作目录类似于全局变量,理想情况下它应该是线程本地的,特别是在像D这样的语言中,默认情况下"全局"变量是线程局部的.是否可以使程序的当前工作目录成为本地线程?
注意:如果您不熟悉D,即使是与语言无关的答案也会有用.
在Linux上,每个进程都由进程描述符表示 - a task_struct
.此结构在内核源代码中的include/linux/sched.h中定义.
其中一个字段task_struct
是指向a的指针fs_struct
,它存储与文件系统相关的信息.fs_struct
在include/linux/fs_struct.h中定义.
fs_struct
有一个名为的字段pwd
,它存储有关当前工作目录的信息(它所在的文件系统以及目录本身的详细信息).
当前目录由操作系统维护,而不是由语言或框架维护.有关详细信息,请参阅GetCurrentDirectory WinAPI函数的说明.
来自描述:
多线程应用程序和共享库代码不应使用GetCurrentDirectory函数,应避免使用相对路径名.由SetCurrentDirectory函数写入的当前目录状态在每个进程中存储为全局变量,因此多线程应用程序无法可靠地使用此值,而不会从可能正在读取或设置此值的其他线程中损坏数据.
归档时间: |
|
查看次数: |
614 次 |
最近记录: |