我有一个 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}
终止,我想运行一些功能或写一些东西到日志文件。
进程被
kill -9
或taskkill /F
终止时无法运行代码,因为操作系统会直接杀死进程,没有机会处理它。
您可以处理导致进程终止的其他信号。
在 POSIX 系统上,这些包括
SIGINT
、SIGTERM
、SIGQUIT
和 SIGHUP
.
在 Windows 上,信号是
SIGINT
、SIGBREAK
、CTRL_CLOSE_EVENT
、CTRL_LOGOFF_EVENT
和 CTRL_SHUTDOWN_EVENT
。
正确处理这些信号真的很棘手,尤其是对于跨平台应用程序。
为了解决这个问题,我创建了一个名为 safe-exit 的包。