Я только что узнал о SIGPIPE, а затем прочитал о том, как обрабатывать их в Python.
Из других источников я прочитал: Как обрабатывать сломанный канал (SIGPIPE) в python?
Предположим, что скрипт чтения канала завершается, затемответы предполагают, что сценарий записи заключает в себе вызовы write в предложении 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:
Очевидно, ничего не было поймано.И, кроме того, это выглядит действительно неправильно, когда печатается «Первоначальное исключение было:», а затем не более.
Что не так / что я неправильно понял?
Томас