2015-09-01 4 views
0

У меня есть код, который отслеживает постоянно изменяющийся файл журнала. Код в настоящее время работает нормально, но когда файл перемещается или удаляется, код все еще пытается прочитать с помощью указателя файла.Проверить статус файла во время цикла

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

Как определить, был ли файл перемещен/удален, чтобы я мог выйти?

+0

Вы ищете решение для конкретной платформы? Если это Linux, вы можете дать 'inotify()' try. Он позволяет отслеживать, когда файл/каталог был изменен, переименован, перемещен, удален и вы можете предпринять соответствующие действия. – Catalin

+0

да это linux..lemee дать ему попробовать..thnx !! – chetan

ответ

1

Возможно, вы захотите попробовать, чтобы преодолеть свою проблему. Как только файл перемещается (что, я думаю, зависит от os, так как некоторые os не разрешают его, поскольку файл открыт другим процессом), вы должны получить исключение, и как только вы его поймаете, вы можете решить, что делать.

(мне нужно, чтобы проверить это, но я думаю, что то, что должно произойти в вашем случае)

Смежные вопросы