我有一个进程通过命名管道写入另一个进程。读者进程可能会行为不端,不打开管道进行阅读。如果发生这种情况,我行为良好的编写器进程将挂起它的open()调用。我希望编写器能够在打开管道时超时,这样,如果读取器没有及时打开管道末端,它就可以清理并继续运行。Nonblocking open()立即返回错误。
如果这是一个选项,那么在这样的场景中使用unix域套接字。由于FIFOs的语义,这是一种尴尬的方式,而且无论如何你都可能会遇到问题。如果有必要的话,这种设计不会扩展到一个客户之外。短期内,你可能会在FIFOs上执行你的意愿,但我怀疑你会后悔的
插座更适合这种情况。您的监听套接字非常适合现有的poll(),客户端连接,编写器转储数据,两端断开连接,每个人都很高兴。没有大惊小怪,没有混乱。
在编写器进程中,以读写模式打开管道,这样可以防止它挂起:)