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