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

gim*_*ilk 5 linux timeout named-pipes

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

Duc*_*uck 3

如果可以的话,请在类似的场景中使用 unix 域套接字。由于 FIFO 的语义,这是一种尴尬的方法,而且无论如何您都可能会遇到超出开放范围的问题。如果有必要的话,这种设计不会扩展到超出一个客户。您也许可以在短期内将您的意愿强制执行到 FIFO 上,但我怀疑您会后悔的。

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