V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
KIRAYOMATO
V2EX  ›  Python

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

  •  
  •   KIRAYOMATO · 37 天前 · 2195 次点击
    这是一个创建于 37 天前的主题,其中的信息可能已经有所发展或是发生改变。
    GPT 说用 SIGNAL 或 win32api 捕捉关闭信号,但是我试了一下都只能在用 Ctrl+C 关闭的时候能成功触发。我想要能在直接把 python 的窗口关掉的时候也能执行这个功能
    8 条回复    2024-10-17 17:51:00 +08:00
    nagisaushio
        1
    nagisaushio  
       37 天前 via Android
    KIRAYOMATO
        2
    KIRAYOMATO  
    OP
       37 天前
    @nagisaushio 这个方法试了也是直接关掉窗口的话是不会触发的
    ysc3839
        3
    ysc3839  
       37 天前 via Android   ❤️ 1
    Windows 关闭控制台窗口不行,控制台进程退出,系统会直接杀死连接到该控制台下的所有进程。
    要关闭窗口时执行代码,只能自己创建窗口。
    sagaxu
        4
    sagaxu  
       37 天前 via Android
    父进程做成无窗口模式,创建 Python 子进程,子进程中创建窗口,父进程检测到子进程退出时执行动作。
    SenLief
        5
    SenLief  
       37 天前
    如果只用 py 实现,那应该只能用子进程,让父进程守护,子进程退出后发出信号让父进程执行。
    wevsty
        6
    wevsty  
       35 天前
    GUI 程序可以自己处理 WM_CLOSE 消息
    控制台程序如果注册 SIGNAL 不能满足要求,那就只能自己做守护进程。
    GeekGao
        7
    GeekGao  
       34 天前
    4 楼正解
    yxgcdnncj
        8
    yxgcdnncj  
       22 天前
    signal.signal(signal.SIGTERM, signal_handler)
    signal.signal(signal.SIGINT, signal_handler)
    用这种方式 检测到关闭信号的时候 做处理
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   931 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:48 · PVG 05:48 · LAX 13:48 · JFK 16:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.