Linux:打开命名pipe道写入时超时

我有一个进程通过命名pipe道写入另一个进程。 读者的过程可能会不当,也不会打开阅读pipe道。 如果发生这种情况,我的行为良好的作家进程将挂在open()调用上。 我想让作者在打开pipe道的时候能够超时,这样如果读者没有及时打开它的话,它可以清理并继续运行。 非阻塞open()立即返回错误。

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

套接字更适合这个。 你的监听套接字很适合你现有的poll(),客户端连接,作者转储他的数据,两端断开连接,每个人都很高兴。 没有大惊小怪,没有麻烦。

在你的作家进程打开读写模式的管道,这应该阻止它挂起:)