如何使用文件描述符检查文件是否仍然存在

Has*_*zok 5 c unix freebsd file-descriptor

我有一个文件描述符设置为正值与open()函数的结果,所以这个fd指示一个文件.当我删除实际文件时,fd仍然是一个正整数.我想知道如果由于某种原因删除文件,我怎么知道这个文件描述符不再有效.简而言之,我怎么知道fd指示的文件,仍然存在与否.我想在FreeBSD上用C做这个.

tep*_*pic 4

Unix 系统允许您删除打开的文件(或者更确切地说,从文件系统中删除对该文件的所有引用)。但文件描述符仍然有效。任何读取和写入调用都将成功,就像文件名仍然存在一样。

换句话说,在文件描述符关闭之前,您无法完全删除文件。关闭后,该文件将自动删除。

使用有效的文件描述符,您可以检查文件名是否仍然存在,例如

printf("%d\n", buf.st_nlink);  // 0 means no filenames
Run Code Online (Sandbox Code Playgroud)

哪里bufstruct stat用 初始化的fstat