chdir()& C中的多线程

时间:2014-05-07 10:51:59

标签: c multithreading pthreads chdir

是否可以使用chdir()或其他命令更改线程中的目录而不影响其他线程的cwd?我使用pthread.h

*我试图编写一个处理多个客户端连接和请求的服务器程序。客户端的一个可用命令是'cd'命令。

3 个答案:

答案 0 :(得分:4)

不,正如其他人所提到的,当前的工作目录是每进程属性,而不是每个线程。您可以通过存储“每个线程CWD”的文件描述符并使用POSIX中指定的各种* at()系统调用来“模拟”每个线程(或每个客户端,或者您构建应用程序)当前工作目录2008(openat()等)来操纵相对于该目录的路径fd。

答案 1 :(得分:3)

不,不是。当前工作目录是流程范围设置,而不是线程设置。

最好的办法是使用完整路径显式访问目录中的文件,而不是更改为该目录。

答案 2 :(得分:1)

回答更新的问题:

对于每个客户端,您将需要一个客户端结构,其中包括(Id,Ip,您可能认为重要的任何内容),还包含客户端现在可视化的目录(假设您执行此类操作)。

因此,当客户端发出请求时,您已经知道客户端工作在哪个目录中。