如何在进程终止之前运行函数?

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

我有一个 python 脚本。在流程终止之前我该如何做? 例如,我想在显示器上打印一些东西或写入日志文件。 操作系统:Windows 11 x64 蟒蛇版本:3.8.10 我试过这个,但它不起作用:

import signal
import sys
import time


def handle_iterrupt():
    print("Handling interrupt")
    sys.exit(0)


if __name__ == '__main__':
    signal.signal(signal.SIGTERM, handle_iterrupt)
    for x in range(100):
        print(x)
        time.sleep(1)

更新:
如果进程从任务管理器终止,或者

cmd
关闭,或者进程以
taskkill /F /PID {PID}
终止,我想运行一些功能或写一些东西到日志文件。

python python-3.x windows signals terminate
1个回答
0
投票

进程被

kill -9
taskkill /F
终止时无法运行代码,因为操作系统会直接杀死进程,没有机会处理它。

您可以处理导致进程终止的其他信号。

在 POSIX 系统上,这些包括

SIGINT
SIGTERM
SIGQUIT
SIGHUP
.

在 Windows 上,信号是

SIGINT
SIGBREAK
CTRL_CLOSE_EVENT
CTRL_LOGOFF_EVENT
CTRL_SHUTDOWN_EVENT

正确处理这些信号真的很棘手,尤其是对于跨平台应用程序。

为了解决这个问题,我创建了一个名为 safe-exit 的包。

文档可以在这里找到:https://safe-exit.readthedocs.io/en/latest/

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