¿Cómo leer un archivo de texto en crecimiento en C ++?

Estoy tratando de leer un archivo que está creciendo (algo similar a lo quetail -F hace), pero debe haber algunos problemas con mi código:

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

Sin las líneas // * 1 y // * 2, el archivo de registro se lee correctamente hasta su final, pero si se agregan nuevas líneas, no pasa nada.

Con searchg and tellg estoy intentando almacenar la posición final actual del archivo, de modo que cuando lo vuelva a abrir pueda ir más allá y leer lo que se ha agregado.

Me gustaría saber qué es incorrecto en mi código, y si es realmente necesario cerrar y volver a abrir el mismo archivo para este propósito.

Gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta