我有一个进程通过命名管道写入另一个进程。读取器进程可能会行为不端并且不会打开管道进行读取。如果发生这种情况,我的行为良好的编写器进程将挂起其 open() 调用。 我希望编写器能够在打开管道时超时,以便在读取器未及时打开管道时它可以清理并继续运行。非阻塞 open() 立即返回错误。
最佳答案
如果这是一个选项,请在这种情况下使用 unix 域套接字。由于 FIFO 的语义,这是一种笨拙的方法,而且无论如何您都可能会遇到问题。如果有必要,这种设计不会超出一个客户。您也许可以在短期内对 FIFO 执行您的意愿,但我怀疑您会后悔的。
套接字更适合这种情况。您的监听套接字非常适合您现有的 poll(),客户端连接,作者转储他的数据,两端断开连接,每个人都很高兴。没有大惊小怪,没有困惑。
关于Linux:打开命名管道进行写入时超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9610774/