python(2.7)でstdinからブロッキング読み出し操作を実行すると、データがパイプに現れるまでプロセスを一時停止する方法はありますか?Pythonの標準入力からブロックする
read()
の問題は、最初に返された後で、read()
がもうブロックしないという事実にあります。例:
echo 'test test ' | python test.py
# test.py
import sys
while True:
string = sys.stdin.read() # Blocks only for the first time
print '!!!!!!!!'
'pipe'は、テキスト' test test'をスクリプトに送り、接続を閉じます。次の 'read()'で何を期待していますか? – furas
他のプロセス(親プロセスなど)がこのプロセスのstdinに書き込むことができます。 –
私の親プロセスは 'echo'しか書くことができず、スクリプトに書くことはできません。 – furas