用户调用Ctrl-C时保存程序状态

时间:2016-04-19 08:48:10

标签: python

在python中,当用户调用Ctrl-C时会发生什么?我是否可以保存程序状态?

上下文管理器怎么样? __exit__()部分会被执行吗?

3 个答案:

答案 0 :(得分:5)

基本上,主线程内引发了KeyboardInterrupt异常。所以,是的,您可以通过在try / except块中捕获它来处理它,并执行__exit__()部分

https://docs.python.org/2/library/exceptions.html#exceptions.KeyboardInterrupt

答案 1 :(得分:4)

这是atexit模块的用途。您可以注册多个退出处理程序。您可以通过运行此程序并观察是否显示消息来查看它:

import atexit

@atexit.register
def exithandler():
    print("Exit trapped!")

if __name__ == '__main__':
    while True:
        pass

答案 2 :(得分:0)

我只提到signal,它也是内置的,可以处理 Ctrl + C 以及更多信号,例如{{1等等。

SIGHUP

这只是一个可以处理大量信号的广泛框架的例子 Here's a list你可以捕捉到的一些信号。