1

私はこれを持っています:

$ cat waitforinput.sh 

#!/bin/sh
while read line
do
    echo $line
done                    

私はこれをします:

>>> p1 = subprocess.Popen("/home/abc/waitforinput.sh", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)

>>> for i in xrange(1000):
...     p1.stdin.write("this is a good idea")

しかし、今これを行うと、出力が表示されません。

>>> for i in p1.stdout:
...     print i
... 

私は何を間違っていますか?

4

1 に答える 1

4

改行が必要です:

p1.stdin.write('this is a good idea\n')

簡単な説明: 実行しているシェル スクリプトは、改行文字が末尾にある完全な行を想定しています。これが、行が終了したことを認識する方法です。

p1.stdin.flush()注:バッファリングのために を追加しなければならない場合もあります。

于 2013-08-08T22:38:54.420 に答える