C++ 在另一个进程使用std::fstream写入文件时从文件中读取

C++ 在另一个进程使用std::fstream写入文件时从文件中读取,c++,stl,fstream,C++,Stl,Fstream,我需要逐行读取文件,这是由std::getline完成的。另一个进程的问题是一直向它添加数据,然后我需要读取新行 例如,文件首先包含10行,我的程序读取10行,然后我的程序应该等待。一段时间后,另一个进程向文件追加5行,然后我的程序读取这5行 我试过这个,但不起作用: int main() { ifstream ifs("test.txt"); string line; while(1) { while(std::getline(ifs, line))

我需要逐行读取文件,这是由std::getline完成的。另一个进程的问题是一直向它添加数据,然后我需要读取新行

例如,文件首先包含10行,我的程序读取10行,然后我的程序应该等待。一段时间后,另一个进程向文件追加5行,然后我的程序读取这5行

我试过这个,但不起作用:

int main() {
    ifstream ifs("test.txt");

    string line;
    while(1) {
        while(std::getline(ifs, line)) {
            cout << line << endl;
        }
        Sleep(50);
    }
}
intmain(){
ifstream ifs(“test.txt”);
弦线;
而(1){
while(std::getline(ifs,line)){

cout当流到达文件末尾并设置错误标志时。设置错误标志后,流将不会执行任何读取操作。假设您可以同时打开文件进行读取和写入(例如POSIX系统上的情况),则
可以
清除()`州标记并轮询流。您可能需要包含一个合适的等待时间


<> P>没有标准的C++接口,可以在文件更改时接收到一些信号。最好是使用一个合适的IPC机制,比如一个管道,当有一个写入过程时,它会阻塞更多的数据。尝试或想要尝试一种锁定/信号机制,以代替
Sleep
?只需在while循环中添加一个
ifs.clear()
,它现在就可以工作了!这对于我的简单程序来说已经足够了,谢谢。