我该如何让Popen使用FIFO命名管道作为标准输入?
import subprocess
import os
import time
FNAME = 'myfifo'
os.mkfifo(FNAME, mode=0o777)
f = os.open(FNAME, os.O_RDONLY)
process = subprocess.Popen(
'wait2.sh',
shell=True,
stdout=subprocess.PIPE,
stdin=f,
stderr=subprocess.PIPE,
universal_newlines=True,
)
while process.poll() is None:
time.sleep(1)
print("process.stdin", process.stdin)
如果我在终端窗口中运行这个脚本。
echo "Something" > myfifo
该进程以
process.stdin None
结束。看起来它没有从 FIFO 中获取标准输入。