SIGPIPEについて学び、Pythonでこれらを処理する方法について読みました。
他の情報源の中で、私は読んだ:Pythonで壊れたパイプ(SIGPIPE)を処理する方法は?
パイプ読み取りスクリプトが終了すると、すべての回答は、書き込みスクリプトが書き込み呼び出しをtry句でラップすることを示唆しています。
しかし、私はこれを機能させることができません。これは私のコードです:
# printer.py
import time
try:
for i in range(10):
time.sleep(1)
print i
except:
print 'We caught the problem'
と
#nonreader.py
#read nothing, but stay alive for 5 sec
import time, sys
time.sleep(5)
sys.exit(0)
そしてシェルで:
$ python printer.py | python nonreader.py
close failed in file object destructor:
Error in sys.excepthook:
Original exception was:
明らかに、何も捕らえられませんでした。さらに、「元の例外は:」と出力されたとき、それは本当に間違っているように見えます。
何が間違っている/私は何を誤解しましたか?
トーマス