我有两个简单的程序:
测试.sh
rm ~/out.txt
for ((i=0; i<10; i++)); do
read j
echo "read: '$j'" >> ~/out.txt
done
和 test.py
import sub
process
proc = subprocess.Popen('/Users/plg/test.sh', stdin=subprocess.PIPE)
proc.stdin.write('1\n')
proc.stdin.write('2\n')
当我运行 test.py(使用 Python 2.7.2)时,~/out.txt 包含以下内容:
read: '1'
read: '2'
read: ''
read: ''
read: ''
...
为什么 test.sh 会收到最后 8 行?它应该卡住并等待输入。但显然,一旦我写了一些东西并且 Python 退出,Popen 垃圾邮件 '\n' 。
我找不到解决这个问题的方法,使用 proc.stdin.flush() 和 proc.stdin.close() 没有任何好处。我该如何防止这种情况?