根据定义,单个程序的多个线程共享它们的工作目录。你知道是否有办法让每个线程都在一个专用的工作目录中?也许是一个特定的图书馆?
注意:目标语言是c++
最佳答案
并非每个操作系统都存在这个概念,但至少在 Linux 和 Mac OS 上存在。
在 Linux 上,使用 CLONE_THREAD
而没有 CLONE_FS
的 clone
创建线程。或者,正常创建线程并使用 unshare
和 CLONE_FS
。然后,正常使用chdir
或fchdir
。
在 Mac 操作系统上使用 pthread_chdir_np
或 pthread_fchdir_np
。这些调用的文档很少,但从 10.12 开始可用。 Chromium source表示从10.5开始就有这个概念,但是你必须直接使用系统调用。
大多数时候您会更喜欢 *at
调用系列,但在某些情况下无法使用它们——例如,connect
ing 或 bind
Unix 域套接字。
关于c++ - 线程工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24491746/