jac*_*hab 5 c++ file-io filestream fifo
我打开一个 FIFO 文件作为ifstream. 一旦对象被创建,线程就会被阻塞,直到我将一些东西发送到 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;
}
}
Run Code Online (Sandbox Code Playgroud)
如果读取 FIFO 末尾,请重置并等待更多数据。如果发生错误,您就完成了。我从这个网站得到了这个想法。您可能还必须在执行重置的同一块中关闭并重新打开 FIFO。
| 归档时间: |
|
| 查看次数: |
8252 次 |
| 最近记录: |