有什么方法可以捕获python中程序意外关闭的异常?
假设我在控制台中运行python脚本然后我不按控制+ c来停止程序而只是单击控制台的关闭按钮有没有办法在控制台关闭之前捕获错误?
像这样:
try:
print("hello")
except KeyboardInterrupt:
exit()
except UnexpectedClose:
print("unexpected shutoff")
exit()
提前致谢
继link之后,我已经在上面的评论中进行了阅读并且正在阅读强制关闭的here发送SIGHUP
这个修改后的版本在终端窗口关闭并且python进程被“杀死”时写入输出文件。
请注意,我只是结合了SE上提供的信息(如引用的那样)。
import signal
import time
class GracefulKiller:
kill_now = False
def __init__(self):
signal.signal(signal.SIGINT, self.exit_gracefully)
signal.signal(signal.SIGTERM, self.exit_gracefully)
signal.signal(signal.SIGHUP, self.exit_gracefully)
def exit_gracefully(self,signum, frame):
with open('kill.txt', 'w') as fpntr:
fpntr.write('killed')
self.kill_now = True
if __name__ == '__main__':
killer = GracefulKiller()
while True:
time.sleep(1)
print("doing something in a loop ...")
if killer.kill_now:
break
print "End of the program. I was killed gracefully :)"