将 fifo 重定向到 python 的 stdin

将 fifo 重定向到 python 的 stdin
$ mkfifo mypipe
$ echo "hello redirection" > mypipe
$ cat < mypipe
hello redirection

当我尝试使用 python 执行上述操作时遇到问题

# pyecho.py
with open("/dev/stdin", "r") as f:
    print(f.read())
$ python3 pyecho.py < mypipe

除非我向管道写入两次,否则这不会退出

$ echo "hello redirection" > mypipe
$ echo "hello redirection" > mypipe

但是如果我将 python 放入循环中

# pyecho.py
while True:
    with open("/dev/stdin", "r") as f:
        print(f.read())

然后在初始迭代(需要两次写入)之后,它返回到按预期工作。

相关内容