我有一个命名管道,在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
答案 0 :(得分:1)
你需要刷新管道或者写一个换行符(通常会自动刷新。这就是回声所做的,非常。在你杀死python进程之前还要从管道中读取;否则它可能会在写入时阻塞管。
编辑:忘记刷新(见下面的评论)。