【发布时间】:2013-01-08 19:11:27
【问题描述】:
我在 Linux 中从事一个 C++ 项目,其中两个程序通过命名管道进行通信。
现在我想在一个程序中检测另一个程序是否与命名管道断开连接。
有没有办法检测断开连接?
编辑
我在 O_RDWR 模式下打开了 fifo - 这就是 select 对断开连接没有反应的原因。现在我用 (O_RDONLY | O_NDELAY) 打开 fifo,一切正常。
【问题讨论】:
-
你是如何制作命名管道的,到目前为止你有什么尝试?
-
管道是用“mkfifo”创建的。然后我等待(使用“选择”)来自另一端的数据。协议不允许我发送 ping 或类似的东西。
-
这是有据可查的。我很难相信你做过任何研究......
-
感谢您的回复.. 我想我问错了问题。实际的问题是:有没有办法在选择调用中检测断开连接,而无需显式调用“读取”或“写入”..
-
select 仍然会对读取的套接字集进行痒痒,您可以读取适当的设置套接字。然后检查 0 和 errno 等。
标签: c++ linux named-pipes