Я пытаюсь прочитать из файла, который растет (, что-то похожее на то, что делает tail -F
), но должны быть проблемы с моим кодом:
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);
}
Без строк // *1 и // *2 лог-файл корректно читается до конца, но при добавлении новых строк ничего не происходит.
С помощью seekg и tellg я пытаюсь сохранить текущую конечную позицию файла, чтобы, когда я снова открою его, я мог пойти прямо туда и прочитать то, что было добавлено.
Я хотел бы знать, что не так в моем коде, и действительно ли необходимо закрывать и снова открывать один и тот же файл для этой цели.
Спасибо.