【问题标题】:Changing directory in a pthread在 pthread 中更改目录
【发布时间】:2013-06-07 20:49:36
【问题描述】:

我的问题是: 如何在不更改其他 pthread 中的当前目录的情况下更改 pthread 中的当前目录,我找到了一个使用 openat() 函数的解决方案,但我没有找到任何解释它如何工作的示例。 使用 chdir() 更改进程中所有 pthread 中的当前目录。 感谢您的帮助。

【问题讨论】:

    标签: pthreads chdir


    【解决方案1】:

    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 的方法可以为当前线程提供自己的当前工作目录,与进程的其余部分分开 - unshare(CLONE_FS); - 但这是不可移植的。

    【讨论】:

    • 非常感谢,我正在做linux,unshare功能非常适合做这个。
    猜你喜欢
    • 2014-08-09
    • 2016-03-30
    • 1970-01-01
    • 2016-07-23
    • 2013-07-14
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多