Has*_*zok 5 c unix freebsd file-descriptor
我有一个文件描述符设置为正值与open()函数的结果,所以这个fd指示一个文件.当我删除实际文件时,fd仍然是一个正整数.我想知道如果由于某种原因删除文件,我怎么知道这个文件描述符不再有效.简而言之,我怎么知道fd指示的文件,仍然存在与否.我想在FreeBSD上用C做这个.
Unix 系统允许您删除打开的文件(或者更确切地说,从文件系统中删除对该文件的所有引用)。但文件描述符仍然有效。任何读取和写入调用都将成功,就像文件名仍然存在一样。
换句话说,在文件描述符关闭之前,您无法完全删除文件。关闭后,该文件将自动删除。
使用有效的文件描述符,您可以检查文件名是否仍然存在,例如
printf("%d\n", buf.st_nlink); // 0 means no filenames
Run Code Online (Sandbox Code Playgroud)
哪里buf是struct stat用 初始化的fstat。