如果某个进程正在运行,例如用户通过任务管理器意外终止或计算机重新启动(因此强制终止了进程),那么我该如何注册一个事件,该进程将在完全终止之前执行某些任务?
我尝试失败的是:
from signal import signal
from signal import SIGTERM
def foo():
print('hello world')
if __name__ == '__main__':
signal(SIGTERM, foo)
while True:
pass
我将从命令行运行此命令,然后导航到任务管理器并结束任务,但是从未调用foo
。
答案 0 :(得分:1)
基于对Can I handle the killing of my windows process through the Task Manager?的回答-任务管理器似乎使用不可屏蔽的信号(等同于Linux的SIGKILL
)杀死了进程。这意味着您无法抓住它。
有other signals you can catch in Windows,例如SIGBREAK
,SIGCHLD
,CTRL_C_EVENT
和CTRL_BREAK_EVENT
,但我想任务管理器不会使用任何终止符一个过程。