I currently have a Console based python program running under windows. The program maintains most of its data in memory and periodically saves the data to disk, or when the user shuts the application down via a Keyboard interrupt (Ctrl + C) event.
我遇到的问题是,当用户点击控制台窗口右上角的“X”按钮时,会话将关闭并且内存中的数据将丢失。我正在寻找的是一个事件/信号或挂钩,以便我可以在关闭之前清理内存。
我希望在没有任何外部库的情况下做到这一点,但如果这是不可能的,我仍然想知道如何做到这一点。
在窗口中
如果你正在使用pywin32
,您可以在控制台关闭之前执行一个事件,我不确定这会告诉您谁或什么正在关闭它,但也许这会让您成功一半。
您可能还想查看:防止控制台应用程序关闭...
def on_exit(signal_type):
print('caught signal:', str(signal_type))
import win32api
win32api.SetConsoleCtrlHandler(on_exit, True)
对于那些遇到这个问题并使用 Linux 的人...
当您关闭 SSH 会话/窗口时,会抛出 SIGHUP 信号(信号挂起)。
import signal
signal.signal( signal.SIGHUP, handler )
def handler(signum, frame):
#this is called when the terminal session is closed
#do logic before program closes
pass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)