您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用poll()在命名管道上使用O_RDWR

使用poll()在命名管道上使用O_RDWR

首先,一些预备:

使用O_NONBLOCKpoll()是常见做法-并非相反。要顺利进行,您需要确保处理所有poll()read()正确的返回状态:

现在,对于Linux:

如果您使用来打开阅读侧O_RDONLY,则:

如果您使用来打开阅读侧O_RDONLY | O_NONBLOCK,则:

(特定于Linux :)如果您在阅读方面打开O_RDWR,则:

(特定于Linux :)如果您在阅读方面打开O_RDWR | O_NONBLOCK,则:

如您所知,O_RDWR与管道一起使用不是POSIX或其他标准。

然而,由于这个问题似乎来了的时候,在Linux上的最佳途径,使“弹性命名管道”的生存,即使一方关闭,并不会引起POLLHUPrevents中或回报0read(),就是用O_RDWR | O_NONBLOCK

我看到了在Linux上处理命名管道的三种主要方法

(便携式。)不使用poll(),并且使用单个管道:

(可移植。)使用poll(),并期望管道(即使是命名管道)仅打开一次,并且一旦关闭,则读取器和写入器都必须重新打开它们,从而建立新的管道:

(不可移植,特定于Linux。)使用poll(),并期望命名管道永远不会终止,并且可以多次连接和断开连接:

其他 2022/1/1 18:21:03 有615人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶