Wie lese ich eine wachsende Textdatei in C ++?

Ich versuche aus einer Datei zu lesen, die wächsttail -F tut), aber es muss einige Probleme mit meinem Code geben:

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);
}

Ohne die Zeilen // * 1 und // * 2 wird die Protokolldatei bis zu ihrem Ende korrekt gelesen, aber wenn neue Zeilen hinzugefügt werden, geschieht nichts.

Mit seekg und tellg versuche ich die aktuelle Endposition der Datei zu speichern, damit ich beim erneuten Öffnen dorthin gehen und lesen kann, was hinzugefügt wurde.

Ich möchte wissen, was an meinem Code nicht stimmt und ob es wirklich notwendig ist, dieselbe Datei zu diesem Zweck zu schließen und erneut zu öffnen.

Vielen Dank.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage