当我想使用文件描述符更改目录时,我应该在调用fchdir
后关闭目录FD,还是fchdir
自动关闭FD?
int fd = open(…);
if (fd == -1) error();
fchdir(fd);
//close(fd);
IMHO,如果使用fd
完成代码以不再使用它,请调用close
。
对fchdir
的调用不会关闭文件描述符(请参阅fchdir的posix描述)。
fchdir
可能(取决于操作系统和文件系统(在返回到调用者之前从fd
获得所需的信息。以下是一个特定操作系统文件系统如何处理fchdir 的系统调用的示例
为了更明智地决定是否应该关闭fd
,请查看close
:的描述
close((函数将解除分配由filtes指示的文件描述符。解除分配意味着通过后续调用open((或其他分配文件描述符的函数来返回文件描述符。进程在与文件描述符相关联的文件上拥有的所有未完成的记录锁都应被移除(即解锁(。