我刚刚了解了 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:
显然,什么都没有抓到。此外,当它打印“原始异常是:”时,它看起来真的错了,然后就没有了。
出了什么问题/我误解了什么?
托马斯