如果一个进程正在运行,比如用户不小心通过任务管理器终止了,或者机器重启了(从而强制终止进程),如何注册这样一个事件,让进程在完全终止之前执行一些任务?
我试过的不成功的是。
from signal import signal
from signal import SIGTERM
def foo():
print('hello world')
if __name__ == '__main__':
signal(SIGTERM, foo)
while True:
pass
我从命令行运行这个,然后导航到任务管理器,然后结束任务,但是: foo
永远不会被调用。
基于对以下问题的回答 我可以通过任务管理器处理杀死我的windows进程吗? - 似乎任务管理器使用一个不可掩饰的信号来杀死进程(相当于Linux的 SIGKILL
). 这就意味着你无法抓住它。
有 您可以在Windows中捕捉到的其他信号譬如 SIGBREAK
, SIGCHLD
, CTRL_C_EVENT
和 CTRL_BREAK_EVENT
但我想任务管理器不会使用这些来终止一个进程。