我正在尝试从一个正在增长的文件中读取(类似于什么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 我试图存储文件的当前结束位置,这样当我重新打开它时,我可以去那里阅读已添加的内容。
我想知道我的代码有什么问题,以及是否真的有必要为此关闭并重新打开同一个文件。
谢谢你。