Как читать растущий текстовый файл в C ++?
Я пытаюсь прочитать из файла, который растет (что-то похожее на то, что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 я пытаюсь сохранить текущую конечную позицию файла, чтобы при повторном открытии я мог пойти туда и прочитать, что было добавлено.
Я хотел бы знать, что не так в моем коде, и если это действительно необходимо, чтобы закрыть и снова открыть тот же файл для этой цели.
Спасибо.