处理意外关闭python

问题描述 投票:0回答:1

有什么方法可以捕获python中程序意外关闭的异常?

假设我在控制台中运行python脚本然后我不按控制+ c来停止程序而只是单击控制台的关闭按钮有没有办法在控制台关闭之前捕获错误?

像这样:

try:
    print("hello")
except KeyboardInterrupt:
    exit()
except UnexpectedClose:
    print("unexpected shutoff")
    exit()

提前致谢

python
1个回答
0
投票

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 :)"
© www.soinside.com 2019 - 2024. All rights reserved.