根据定义,单个程序的多个线程共享其工作目录。你知道是否有办法让每个线程都在专用的工作目录中?也许是一个特定的图书馆?
注意:目标语言是c ++
答案 0 :(得分:5)
工作目录是为给定进程修复的环境属性。您可能希望为每个线程模拟一个工作目录概念,只需拥有一个特定于线程的字符串,该字符串为每个线程保存不同的目录。
答案 1 :(得分:0)
这个概念并非在每个操作系统上都存在,但至少在Linux和Mac OS上才存在。
在Linux上,使用clone
和CLONE_THREAD
而不使用CLONE_FS
创建线程。或者,通常创建一个线程,然后将unshare
与CLONE_FS
一起使用。然后,正常使用chdir
或fchdir
。
在Mac OS上,使用pthread_chdir_np
或pthread_fchdir_np
。这些调用的文档稀疏,但自10.12起可用。 Chromium source表示此概念自10.5起就存在,但是您必须直接使用syscall。
大多数时候,您会希望使用*at
系列通话,但是在某些情况下无法使用它们,例如,connect
ing或{{ 1}}}的Unix域套接字。