$ 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())
然后在初始迭代(需要两次写入)之后,它返回到按预期工作。