【发布时间】:2012-11-18 09:21:44
【问题描述】:
如果我在一个线程中 chdir,那会影响父程序的 cwd 吗?
【问题讨论】:
-
您试一试并告诉我们如何?
-
带父程序是指线程的进程还是线程进程的父进程?
如果我在一个线程中 chdir,那会影响父程序的 cwd 吗?
【问题讨论】:
是的。
如果您在多线程应用程序中需要相对路径,使用at() 版本的函数是最安全的。例如,openat() 就像open():
int openat(int dirfd, const char *pathname, int flags);
第一个参数是目录的fd。该路径是相对于该目录的。
【讨论】:
openat()。它们允许您使用相对于目录的路径。您将目录作为文件描述符打开,然后您可以打开与其相关的文件。
open() 或openat(),就像使用文件一样。 (不过,您无法从描述符中读取数据。)
是的,“父程序”(线程进程的初始线程)会受到影响,因为当前目录由进程的所有线程共享。
【讨论】: