Python - 如何通过“X”按钮检测用户何时关闭控制台应用程序

时间:2011-03-17 03:38:12

标签: python console signals application-shutdown

我目前在Windows下运行基于控制台的python程序。程序将大部分数据保存在内存中,并定期将数据保存到磁盘,或者当用户通过键盘中断( Ctrl + C )事件关闭应用程序时。

我遇到的问题是当用户点击控制台窗口右上角的“X”按钮时,会话关闭,内存中的数据丢失。我正在寻找的是一个事件/信号或钩子,以便我可以在关闭之前清理内存。

我希望在没有任何外部库的情况下这样做,但如果不可能,我仍然想知道它是如何完成的。

1 个答案:

答案 0 :(得分:3)

在Windows中

如果你正在使用pywin32,你可以在控制台关闭之前执行一个事件,我不确定这会告诉你关闭它的人或者是什么,但是这可能会让你半途而废。 您可能还想查看:Prevent a console app from closing ...

import atexit, os
  atexit.register(lambda: os.system("pause"))

对于那些遇到这个并使用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