怎么让 Python 程序在被关掉的时候自动执行一个函数?

2024-10-02 15:46:27 +08:00
 KIRAYOMATO
GPT 说用 SIGNAL 或 win32api 捕捉关闭信号,但是我试了一下都只能在用 Ctrl+C 关闭的时候能成功触发。我想要能在直接把 python 的窗口关掉的时候也能执行这个功能
2783 次点击
所在节点    Python
8 条回复
nagisaushio
2024-10-02 15:48:41 +08:00
KIRAYOMATO
2024-10-02 16:05:25 +08:00
@nagisaushio 这个方法试了也是直接关掉窗口的话是不会触发的
ysc3839
2024-10-02 16:13:36 +08:00
Windows 关闭控制台窗口不行,控制台进程退出,系统会直接杀死连接到该控制台下的所有进程。
要关闭窗口时执行代码,只能自己创建窗口。
sagaxu
2024-10-02 16:18:30 +08:00
父进程做成无窗口模式,创建 Python 子进程,子进程中创建窗口,父进程检测到子进程退出时执行动作。
SenLief
2024-10-02 17:56:56 +08:00
如果只用 py 实现,那应该只能用子进程,让父进程守护,子进程退出后发出信号让父进程执行。
wevsty
2024-10-04 14:38:55 +08:00
GUI 程序可以自己处理 WM_CLOSE 消息
控制台程序如果注册 SIGNAL 不能满足要求,那就只能自己做守护进程。
R4rvZ6agNVWr56V0
2024-10-05 13:54:42 +08:00
4 楼正解
yxgcdnncj
2024-10-17 17:51:00 +08:00
signal.signal(signal.SIGTERM, signal_handler)
signal.signal(signal.SIGINT, signal_handler)
用这种方式 检测到关闭信号的时候 做处理

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1077405

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX