大きくなっているファイル(何が起こっているのかと似ています)から読み込もうとしています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を使用して、ファイルの現在の終了位置を保存しようとしています。これにより、ファイルを再度開いたときに、そこに移動して、追加された内容を読み取ることができます。
コードの何が問題になっているのか、そしてこの目的のために同じファイルを閉じて再度開く必要があるかどうかを知りたいのですが。
ありがとうございました。