Linux:打开命名管道进行写入时超时

时间:2012-03-07 23:30:52

标签: linux timeout named-pipes

我有一个进程通过命名管道写入另一个进程。阅读器过程可能会出现行为异常而无法打开阅读管道。如果发生这种情况,我的表现良好的编写器进程将挂起其open()调用。 我希望编写器能够在打开管道时超时,这样如果读者没有及时打开它,它可以清理并继续运行。非阻塞open()会立即返回错误。

2 个答案:

答案 0 :(得分:3)

如果是一个选项,请使用unix域套接字来实现这样的场景。由于FIFO的语义,这是一种尴尬的方式来做到这一点,你可能会在开放之前遇到问题。如果有必要,这种设计不会超出一个客户。你可以在短期内强制执行你对FIFO的意愿,但我怀疑你会后悔。

插座更适合这种情况。你的监听套接字非常适合你现有的poll(),客户端连接,编写器转储他的数据,两端断开连接,每个人都很高兴。没有大惊小怪,没有麻烦。

答案 1 :(得分:0)

在您的编写器进程中以读写模式打开管道,这应该阻止它挂起:)