Я хотел бы отслеживать файл журнала, в который записывается приложение. Я хочу обрабатывать файл построчно, как только он будет записан или вскоре после него. Я не нашел способа определить, что файл был расширен после достижения eof.
Код должен работать на Mac и ПК и может быть на любом языке, хотя я больше всего знаком с C++ и Perl.
Есть ли у кого-нибудь предложения, как это лучше сделать?





В Perl модуль Файл :: Хвост делает именно то, что вам нужно.
Достаточно общий ответ:
Большинство языков в EOF возвращают, что данные не были прочитаны. Вы можете повторить попытку чтения через некоторое время, и если с тех пор файл увеличился, на этот раз операционная система вернет данные.
Вы должны иметь возможность читать стандартный io из tail -f
Суть tail -f заключается в следующем цикле:
open IN, $file;
while(1) {
my $line = <IN>;
if ($line) {
#process line...
} else {
sleep(1);
seek(IN,0,1);
}
}
close IN;
Вызов искать предназначен для сброса флага EOF.
Я бы подумал о том, чтобы выводить действия через tee, а затем использовать хвост (или использовать цикл над) файла, созданного tee, для некоторого использования.