是否可以使用chdir()
或其他命令更改线程中的目录而不影响其他线程的cwd?我使用pthread.h
。
*我试图编写一个处理多个客户端连接和请求的服务器程序。客户端的一个可用命令是'cd'
命令。
答案 0 :(得分:4)
不,正如其他人所提到的,当前的工作目录是每进程属性,而不是每个线程。您可以通过存储“每个线程CWD”的文件描述符并使用POSIX中指定的各种* at()系统调用来“模拟”每个线程(或每个客户端,或者您构建应用程序)当前工作目录2008(openat()等)来操纵相对于该目录的路径fd。
答案 1 :(得分:3)
不,不是。当前工作目录是流程范围设置,而不是线程设置。
最好的办法是使用完整路径显式访问目录中的文件,而不是更改为该目录。
答案 2 :(得分:1)
回答更新的问题:
对于每个客户端,您将需要一个客户端结构,其中包括(Id,Ip,您可能认为重要的任何内容),还包含客户端现在可视化的目录(假设您执行此类操作)。
因此,当客户端发出请求时,您已经知道客户端工作在哪个目录中。