Я хочу получить измененное содержимое текстового файла. Обнаружение изменения файла с помощью inotify в C ++ работает нормально, но есть ли способ получить измененное содержимое текстового файла? Проблема заключается в том, что событие inotify используется до того, как будет написано содержимое, поэтому ifstream выдает предыдущий вывод.
Я использую inotify следующим образом (упрощенно):
fd = inotify_init();
wd = inotify_add_watch(fd, "myDir", IN_MODIFY);
while(1)
{
i = 0;
length = read( fd, buffer, BUF_LEN );
while ( i < length ) {
struct inotify_event *event = ( struct inotify_event * ) &buffer[ i ];
if ( event->len && (event->mask & IN_MODIFY) && !(event->mask & IN_ISDIR)) {
getNewContent();//-->if I use ifstream herre, I get the previous content
cout<<event->name<<", WD"<<event->wd<<endl;
i += EVENT_SIZE + event->len;
}
}
}
void getNewContent(){
string temp;
ifstream in("myDir/test.txt");
while(getline(in, temp,';')){
cout<<temp.c_str()<<endl;
}
in.close();
}
Задача ещё не решена.