追加されたコンテンツのファイルを動的に読み取りたい。ファイルは別のスレッドによって書き込まれます。私はubuntuを使用していて、inotifyを見ましたが、追加されたコンテンツを読むだけでよいので、簡単な方法を試して実装したかったのです。私が試したことは次のとおりです。
ifstream logFile("path_to_file", ifstream::in);
if(logFile.fail()) {
cout << "file not found" << endl;
exit(0);
}
while (true) {
string line;
getline(logFile, line);
if( logFile.eof() ) {
//wait for 2 seconds
logFile.clear();
}
if(!line.empty())
cout << line << endl;
ただし、EOF が発生した場合、最後にさらにコンテンツが追加されている場合や、エラー状態をクリアするために clear() を呼び出した場合でも、フラグはリセットされません。このアプローチで何が問題になる可能性がありますか? ファイルを共有モードで開く必要がありますか?
ありがとう。