c++ - 线程工作目录

标签 c++ multithreading c++11

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

注意:目标语言是c++

最佳答案

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

在 Linux 上,使用 CLONE_THREAD 而没有 CLONE_FSclone 创建线程。或者,正常创建线程并使用 unshareCLONE_FS。然后,正常使用chdirfchdir

在 Mac 操作系统上使用 pthread_chdir_nppthread_fchdir_np。这些调用的文档很少,但从 10.12 开始可用。 Chromium source表示从10.5开始就有这个概念,但是你必须直接使用系统调用。

大多数时候您会更喜欢 *at 调用系列,但在某些情况下无法使用它们——例如,connecting 或 bindUnix 域套接字。

关于c++ - 线程工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24491746/

相关文章:

c++ - 我在 VS12 中编写代码,但它无法在 Linux 上编译

c++ - 创建指向特殊文件夹(如控制面板或计算机管理)的快捷方式

java - 如何将超时从一个 FutureTask 传播到另一个由其 Callable 使用的依赖任务?

c++ - 如何在 GCC 中启用反斜杠支持?

c++ - 读取 Elf Binary 中的 GOT 条目

python - 如何用python调试死锁?

python - 实现代码以在python中的多个进程之上启动多个线程

c++ - 将带有捕获的 lambda 传递给遗留回调

c++ - 如何获取 `std::function` 的参数数量?

c++ - 执行最后一行后出现堆栈错误