3

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

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

4

3 回答 3

7

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

于 2014-05-07T11:10:31.400 回答
3

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

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

于 2014-05-07T10:55:37.527 回答
1

回答更新的问题:

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

因此,当来自客户端的请求到来时,您已经知道该客户端在哪个目录中工作。

于 2014-05-07T11:00:39.460 回答