进程终止时做什么

问题描述 投票:0回答:1

如果一个进程正在运行,比如用户不小心通过任务管理器终止了,或者机器重启了(从而强制终止进程),如何注册这样一个事件,让进程在完全终止之前执行一些任务?

我试过的不成功的是。

from signal import signal
from signal import SIGTERM

def foo():
    print('hello world')

if __name__ == '__main__':
    signal(SIGTERM, foo)
    while True:
        pass

我从命令行运行这个,然后导航到任务管理器,然后结束任务,但是: foo 永远不会被调用。

python process exit
1个回答
1
投票

基于对以下问题的回答 我可以通过任务管理器处理杀死我的windows进程吗? - 似乎任务管理器使用一个不可掩饰的信号来杀死进程(相当于Linux的 SIGKILL). 这就意味着你无法抓住它。

您可以在Windows中捕捉到的其他信号譬如 SIGBREAK, SIGCHLD, CTRL_C_EVENTCTRL_BREAK_EVENT但我想任务管理器不会使用这些来终止一个进程。

© www.soinside.com 2019 - 2024. All rights reserved.