【问题标题】:Do something if process is terminated如果进程终止,请执行某些操作
【发布时间】:2020-05-11 19:40:33
【问题描述】:

如果一个进程正在运行,例如用户通过任务管理器意外终止或机器重新启动(因此强制终止进程),我如何注册这样一个事件,该进程将在完全终止之前执行某些任务?

我尝试失败的是:

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】:

    根据Can I handle the killing of my windows process through the Task Manager? 的答案 - 似乎任务管理器使用不可屏蔽的信号(相当于Linux 的SIGKILL)杀死进程。这意味着你无法抓住它。

    other signals you can catch in Windows,比如SIGBREAKSIGCHLDCTRL_C_EVENTCTRL_BREAK_EVENT,但我猜任务管理器不会使用其中任何一个来终止进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 2018-12-19
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      相关资源
      最近更新 更多