我有一个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}
终止,我想运行一些函数或将一些内容写入日志文件。
1条答案
按热度按时间dffbzjpn1#
当一个进程被
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/