gpt4 book ai didi

c++ - 阻止通过 ifstream 对象从 FIFO 读取

转载 作者:太空狗 更新时间:2023-10-29 21:09:23 24 4
gpt4 key购买 nike

我以 ifstream 打开一个 FIFO 文件。一旦对象被创建,线程就会被阻塞,直到我向 FIFO 发送一些东西(这对我来说没问题)。然后我调用 getline() 从流中获取数据。

如何在更多数据写入 FIFO 文件之前再次读取阻塞线程?

谢谢

最佳答案

我没有测试过这段代码,但我想知道当您读取所有可用数据时,FIFO 是否只是简单地设置了 EOF 位。在这种情况下,您可以这样做:

std::ifstream fifo;
std::string line;
bool done = false;

/* code to open your FIFO */

while (!done)
{
while (std::getline(fifo, line))
{
/* do stuff with line */
}
if (fifo.eof())
{
fifo.clear(); // Clear the EOF bit to enable further reading
}
else
{
done = true;
}
}

如果您读取了 FIFO 的末尾,请重置并等待进一步的数据。如果发生错误,您就完成了。我从 this website 得到了这个想法.您可能还必须在执行重置的同一 block 中关闭并重新打开 FIFO。

关于c++ - 阻止通过 ifstream 对象从 FIFO 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/480525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com