fchdir 如何工作?

Utk*_*pta 4 c chdir

在它的主页上写着:

fchdir() 与 chdir() 相同;唯一的区别是目录作为打开的文件描述符给出。

原型如下:

int chdir(const char *路径);
int fchdir(int fd);

我的问题是如何将目录作为文件描述符传递?目录是否也像文件一样有相应的描述符?

P.P*_*.P. 5

目录是否也像文件一样有相应的描述符?

是的。Unix 哲学(和 Linux)是将一切都视为字节流。所以是的,您可以open(2)对目录执行操作并获取其文件描述符。不仅是目录,套接字、管道和设备也可以使用open(2)系统调用打开,并像文件一样对其进行操作。