ofstream - 检测文件是否在打开和关闭之间被删除

joj*_*ojo 4 c++ linux file

我在linux上使用记录器.
记录器在init上打开一个文件.
并在程序运行时写入该文件描述符.
如果在创建文件描述符后将删除日志文件,
则不会检测到异常/错误.
我试过了:

out.fail()
!out.is_open()
Run Code Online (Sandbox Code Playgroud)

我有谷歌这个并找到这篇文章.
http://www.daniweb.com/forums/thread23244.html

所以我现在明白,即使使用rm删除了文件.它仍然存在,它只是没有联系.
什么是最好的方式来解决这个问题?
1.这是一个日志应用程序,性能是一个问题,我不想使用stat()在每次写入
2.我不在乎,如果一些日志文件中的行会在开始时丢失
3.允许用户删除日志文件,以重新开始.记录器应该重新打开文件.

Wil*_*ill 6

文件被' 取消链接 ' rm.

一个文件可以有很多名字.如果没有名字,没有人打开它,那么文件系统会回收它,它可以重用它所占用的空间.

Linux有一个用于"观看"调用文件的API inotify,但这会引发复杂性和竞争条件.

所以更大的问题是,还有谁在运行时删除此文件,为什么?说服他们不要!