Jak czytać rosnący plik tekstowy w C ++?
Próbuję odczytać z rosnącego pliku (coś podobnego do tego, cotail -F
robi), ale z moim kodem muszą być pewne problemy:
string log, logFile("test.log");
size_t p = 0;
while(true)
{
ifstream ifs(logFile.c_str());
ifs.seekg(p); //*1
while(ifs.eof() == false)
{
getline(ifs, log);
cout << log << endl;
p = ifs.tellg(); //*2
}
nanosleep(&pause, NULL);
}
Bez linii // * 1 i // * 2 plik dziennika jest poprawnie odczytywany aż do końca, ale jeśli dodawane są nowe wiersze, nic się nie dzieje.
Przy pomocy seekg i tellg próbuję przechowywać bieżącą pozycję końcową pliku, więc gdy go ponownie otworzę, mogę przejść tam i zobaczyć, co zostało dodane.
Chciałbym wiedzieć, co jest nie tak w moim kodzie i czy naprawdę konieczne jest zamknięcie i ponowne otwarcie tego samego pliku w tym celu.
Dziękuję Ci.