Как читать растущий текстовый файл на С++?

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

Я хотел бы знать, что не так в моем коде, и действительно ли необходимо закрывать и снова открывать один и тот же файл для этой цели.

Спасибо.

11
задан hmjd 1 August 2012 в 10:51
поделиться