通过Python写入现有的命名管道

时间:2014-11-25 05:41:34

标签: python bash pipe

我有一个命名管道,在Bash中创建如下:

PIPE_IN=$(mktemp -u)
mkfifo $PIPE_IN

这会产生,例如:/tmp/tmp.H8EP7rYjCL

如何在Python中写入此命名管道? 我已经尝试将其重新打开为文件:

with open('/tmp/tmp.H8EP7rYjCL', 'w') as f:
    f.write('something')

但这不起作用。奇怪的是,似乎无论我写入新打开的文件,都会在内部进行缓冲。当我通过Bash写入命名管道时,我看到附加到命名管道的进程中的缓冲内容。例如,

echo "foo" > /tmp/tmp.H8EP7rYjCL

产量

somethingfoo

1 个答案:

答案 0 :(得分:1)

你需要刷新管道或者写一个换行符(通常会自动刷新。这就是回声所做的,非常。在你杀死python进程之前还要从管道中读取;否则它可能会在写入时阻塞管。

编辑:忘记刷新(见下面的评论)。