检查While循环中的文件状态

Check Status Of A File In While Loop

本文关键字:文件 状态 While 循环 检查      更新时间:2023-10-16

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

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

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

您可能想要尝试捕获来克服您的问题。一旦文件被移动(我猜这是操作系统相关的,因为一些操作系统不允许它,因为文件是由另一个进程打开的),你应该得到一个异常,一旦你抓住它,你可以决定怎么做。

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