У меня есть два процесса (первый источник в perl, секундный источник в c ++), и оба они используют один и тот же файл. Один из них записывает в файл построчно, а другой читает из файла, если к нему добавляется новая строка. Чтобы второй процесс узнал, что файл изменен, первый процесс сбрасывается после каждой зависимости. Но второй процесс проверяет только время модификации, которое нужно увеличить, чтобы начать чтение, но на самом деле после добавления новой строки и очистки файла не изменяется его «время последней модификации». Так что для этого нужен еще один апораче. Итак, вопрос здесь: как определить, добавлена ли новая строка к файлу, чтобы начать его обработку?
вот фрагменты из исходников этого процесса:
1
open FILE, ">>", $file or die $!;
for($i = 0; $i <= $#ticks; ++$i)
{
print FILE $ticks[$i]."\n";
FILE->flush();
sleep(10);
}
close FILE;
2.
struct stat64 file_info;
if(fstat64(fileno(this->auto_file_ptr.get_file()), &file_info)!=0)
{
//throw error that file have been changed
}
data_file_new_modification_time = 1000LL * file_info.st_mtime;
if(this->data_file_last_modification_time!=data_file_new_modification_time)
{
//processs the file
}