1
我的問題是: 如何在不更改其他pthreads中的當前目錄的情況下更改pthread中的當前目錄,我找到了使用openat()函數的解決方案,但未找到任何解釋它如何工作的例子。 使用chdir()更改進程中所有pthread中的當前目錄。 謝謝你的幫助。在pthread中更改目錄
我的問題是: 如何在不更改其他pthreads中的當前目錄的情況下更改pthread中的當前目錄,我找到了使用openat()函數的解決方案,但未找到任何解釋它如何工作的例子。 使用chdir()更改進程中所有pthread中的當前目錄。 謝謝你的幫助。在pthread中更改目錄
openat()
方法是替代方案更改當前工作目錄。而不是調用的:
chdir("/new/working/directory");
open("some/relative/path", flags);
你改用:
dirfd = open("/new/working/directory", O_RDONLY | O_CLOEXEC);
openat(dirfd, "some/relative/path", flags);
這是POSIX標準的方式,以避免在一個線程中改變了進程級的當前工作目錄,但相對路徑仍然有效。
還有一種特定於Linux的方式可以讓當前線程擁有自己當前的工作目錄,與進程的其餘部分分離 - 但這不是可移植的。
非常感謝,我在linux上工作,取消共享功能是完美的。 –