如何检查文件是否已关闭

时间:2013-01-15 17:58:33

标签: c linux

我有文件描述符,在我的信号处理程序中,我关闭文件。但由于其他条件,该文件可能已提前关闭。有没有办法检查文件描述符是否指向c和linux中的打开文件?

更新: 是否可以确定与文件描述符关联的文件名?这样,如果fd被回收,app就可以检测到它。

2 个答案:

答案 0 :(得分:2)

关闭文件描述符fd后,为其分配-1,以便稍后您可以针对fd测试-1,看看您是否已将其关闭。


您可以通过readlink()上的/proc/<pid>/fd/<file descriptor>来查找文件名(有效)文件描述符引用。

答案 1 :(得分:1)

当您打开文件时,它始终会获得分配的最小可用fd。因此,如果您关闭fd,然后在代码中的某个位置打开另一个文件,则可以轻松地将相同的fd重新分配给此新文件。因此,没有可靠的方法来判断文件描述符是否已关闭,因为它现在可以指向另一个打开的文件。