在python中,当用户调用Ctrl-C时会发生什么?我是否可以保存程序状态?
上下文管理器怎么样? __exit__()
部分会被执行吗?
答案 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你可以捕捉到的一些信号。