我有代码监视不断变化的日志文件。代码当前运行正常但是当文件被移动或删除时,代码仍然试图使用文件指针读取。
fr = fopen (filename, "rt");
while (1) {
if(fgets(buffer, 500, fr) != NULL) {
//do something
} else {
sleep(1); //wait for data to come
}
}
如何检测文件是否已被移动/删除,以便退出?
答案 0 :(得分:1)
您可能希望尝试捕捉以克服您的问题。 移动文件后(我猜这是依赖于os的,因为某些操作系统不会允许它,因为文件是由另一个进程打开的),你应该得到一个异常,一旦你抓住它就可以决定该做什么。
(我需要测试它,但我认为你的情况会发生什么)