处理意外关机

2024-03-28 23:30:43 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,有没有什么方法可以捕捉到程序意外关闭的异常?你知道吗

假设我在控制台中运行一个python脚本,那么我不按control+c来停止程序,而只是单击控制台的close按钮,在控制台关闭之前有没有方法捕获错误?你知道吗

像这样:

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

提前谢谢


Tags: 方法程序脚本helloclose错误exit按钮
1条回答
网友
1楼 · 发布于 2024-03-28 23:30:43

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 :)"

相关问题 更多 >