我可以在Linux上打开一个命名管道,用于在Python中进行非阻塞写入
我使用mkfifo创建了一个fifo文件.是否可以不受阻塞地打开/写入?我想知道是否有读者是不可知论者.
下列: with open('fifo','wb',0) as file: file.write(b'howdy') 只是在露天停下来,直到我从另一个外壳做了一个cat fifo.我希望我的程序能够取得进步,无论数据消费者是否正在观看. 我应该使用不同的Linux机制吗? 解决方法
来自man 7 fifo:
所以第一个解决方案是使用O_NONBLOCK打开FIFO.在这种情况下,您可以检查errno:如果它等于ENXIO,那么您可以稍后尝试打开FIFO. import errno import posix try: posix.open('fifo',posix.O_WRONLY | posix.O_NONBLOCK) except OSError as ex: if ex.errno == errno.ENXIO: pass # try later 另一种可能的方法是使用O_RDWR标志打开FIFO.在这种情况下它不会阻止.其他进程可以使用O_RDONLY打开它而没有问题. import posix posix.open('fifo',posix.O_RDWR) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |