我经历了各种不同的 linux 命名管道客户端/服务器实现,但它们中的大多数都在读/写时使用阻塞默认值。
因为我已经在使用 poll() 来检查其他标志,所以虽然通过 poll() 检查传入的 FIFO 数据也是一个好主意......
经过所有研究后,我认为以 O_RDWR 模式打开管道是在没有编写器打开管道时防止管道上无限数量的 EOF 事件的唯一方法。
这样管道的两端都是关闭的,其他客户端也可以打开可写端。为了回应我会使用单独的管道......
我的问题是,尽管我找到了一些使用 O_RDWR 标志的示例,但 open() 联机帮助页将该标志描述为在分配给 FIFO 时未定义。( http://linux.die.net/man/3/open )
但是你将如何在没有 O_RDWR 的管道上使用 poll() 呢?您认为“O_RDWR”是打开管道的合法方式吗???