python 如何在进程被杀死之前运行函数?

mm9b1k5b  于 2023-05-05  发布在  Python
关注(0)|答案(1)|浏览(288)

我有一个python脚本。在进程终止之前,我如何做一些事情?例如,我想在显示器上打印一些东西或写入日志文件。操作系统:Windows 11 x64 python version: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}终止,我想运行一些函数或将一些内容写入日志文件。

dffbzjpn

dffbzjpn1#

当一个进程被kill -9taskkill /F终止时,没有办法运行代码,因为操作系统将直接杀死该进程,没有机会处理它。
您可以处理导致进程终止的其他信号。
在POSIX系统上,这些包括SIGINTSIGTERMSIGQUITSIGHUP
在Windows上,信号为SIGINTSIGBREAKCTRL_CLOSE_EVENTCTRL_LOGOFF_EVENTCTRL_SHUTDOWN_EVENT
正确处理这些信号确实很棘手,特别是对于跨平台应用程序。
为了解决这个问题,我创建了一个名为safe-exit的包。
文档可以在这里找到:https://safe-exit.readthedocs.io/en/latest/

相关问题