linux fifo python,在Python中如何正确写入FIFO?

当我在

Python中打开FIFO(命名管道)进行写入时,会发生一些非常奇怪的事情.考虑当我尝试打开一个FIFO来编写交互式解释器时会发生什么:

>>> fifo_write = open('fifo', 'w')

上述行阻止,直到我打开另一个解释器并键入以下内容:

>>> fifo_read = open('fifo', 'r')

>>> fifo.read()

我不明白为什么我不得不等待管道打开阅读,但让我们跳过.上述代码将阻止,直到有预期的数据可用.但是我们回到第一个口译窗口,输入:

>>> fifo_write.write("some testing data\n")

>>> fifo_write.flush()

预期的行为是在第二个解释器上,读取的调用将返回,我们将在屏幕上看到数据,除非我没有发生.如果我调用os.fsync,会发生以下情况:

>>> import os

>>> fifo_write.flush()

>>> os.fsync(fifo_write.fileno())

Traceback (most recent call last):

File "", line 1, in

OSError: [Errno 22] Invalid argument

而fifo读者还在等待.但是,如果我调用fifo_writer.close(),那么数据将被刷新.如果我使用shell命令来提供管道:

$echo "some data" > fifo

那么读者的输出是:

>>> fifo_read.read()

'some data\n'

有没有人经历过这个?如果是这样,它有解决办法吗?我目前的操作系统是Ubuntu 11.04和Linux 2.6.38.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值