在While循环中检查文件的状态

时间:2015-09-01 07:13:59

标签: c++ fgets file-monitoring

我有代码监视不断变化的日志文件。代码当前运行正常但是当文件被移动或删除时,代码仍然试图使用文件指针读取。

fr = fopen (filename, "rt");
while (1) {
  if(fgets(buffer, 500, fr) != NULL) {
       //do something  
  } else {
    sleep(1); //wait for data to come
  }
}

如何检测文件是否已被移动/删除,以便退出?

1 个答案:

答案 0 :(得分:1)

您可能希望尝试捕捉以克服您的问题。 移动文件后(我猜这是依赖于os的,因为某些操作系统不会允许它,因为文件是由另一个进程打开的),你应该得到一个异常,一旦你抓住它就可以决定该做什么。

(我需要测试它,但我认为你的情况会发生什么)