我有文件描述符,在我的信号处理程序中,我关闭文件。但由于其他条件,该文件可能已提前关闭。有没有办法检查文件描述符是否指向c和linux中的打开文件?
更新: 是否可以确定与文件描述符关联的文件名?这样,如果fd被回收,app就可以检测到它。
答案 0 :(得分:2)
关闭文件描述符fd
后,为其分配-1
,以便稍后您可以针对fd
测试-1
,看看您是否已将其关闭。
您可以通过readlink()
上的/proc/<pid>/fd/<file descriptor>
来查找文件名(有效)文件描述符引用。
答案 1 :(得分:1)
当您打开文件时,它始终会获得分配的最小可用fd。因此,如果您关闭fd,然后在代码中的某个位置打开另一个文件,则可以轻松地将相同的fd重新分配给此新文件。因此,没有可靠的方法来判断文件描述符是否已关闭,因为它现在可以指向另一个打开的文件。