【发布时间】:2010-10-21 15:16:02
【问题描述】:
我正在使用检测文件(日志文件)中更改的代码,然后在 fseek 和 ftell 的帮助下处理更改。但是如果文件被删除和更改(使用 logrotate),程序会停止但不会死亡,因为它不会检测到更多更改(即使文件被重新创建)。 fseek 不显示错误和eiter ftell。 我怎样才能检测到该文件删除?也许是一种用其他 FILE *var 重新打开文件并比较文件描述符的方法。但我怎么能做到这一点。 ?
【问题讨论】:
-
像 if(!filemember) 这样的东西不适合你吗?
-
文件打开一次,然后用 fseek(fp,0,FSEEK_END); 等待其长度的变化;但是当文件被删除时,这永远不会改变。