检测linux中与命名管道的断开连接

时间:2013-01-08 19:11:28

标签: c++ linux named-pipes

我在Linux上从事一个C ++项目,其中两个程序通过命名管道进行通信。

现在我想在一个程序中检测另一个程序是否与命名管道断开连接。

有没有办法检测断开连接?

修改

我在O_RDWR模式下打开了fifo - 这就是select没有对断开连接做出反应的原因。现在我用(O_RDONLY | O_NDELAY)打开fifo,一切正常。

2 个答案:

答案 0 :(得分:1)

如果一端的read返回0字节,则管道断开连接。

答案 1 :(得分:1)

这与TCP / IP相同。您需要尝试读取数据,如果失败为0,则管道已关闭。

阅读和回忆:

  

这些调用返回接收的字节数,如果发生错误则返回-1          发生了。 对等体执行后,返回值为0          有序关闭

还有SIGPIPE信号。当你尝试写一个没有读者的破管道时会发送它。