线程工作目录

时间:2014-06-30 13:53:41

标签: c++ multithreading c++11

根据定义,单个程序的多个线程共享其工作目录。你知道是否有办法让每个线程都在专用的工作目录中?也许是一个特定的图书馆?

注意:目标语言是c ++

2 个答案:

答案 0 :(得分:5)

工作目录是为给定进程修复的环境属性。您可能希望为每个线程模拟一个工作目录概念,只需拥有一个特定于线程的字符串,该字符串为每个线程保存不同的目录。

答案 1 :(得分:0)

这个概念并非在每个操作系统上都存在,但至少在Linux和Mac OS上才存在。

在Linux上,使用cloneCLONE_THREAD而不使用CLONE_FS创建线程。或者,通常创建一个线程,然后将unshareCLONE_FS一起使用。然后,正常使用chdirfchdir

在Mac OS上,使用pthread_chdir_nppthread_fchdir_np。这些调用的文档稀疏,但自10.12起可用。 Chromium source表示此概念自10.5起就存在,但是您必须直接使用syscall。

大多数时候,您会希望使用*at系列通话,但是在某些情况下无法使用它们,例如,connect ing或{{ 1}}}的Unix域套接字。