Python - Как определить, когда пользователь закрывает консольное приложение с помощью кнопки «X» - PullRequest
4 голосов
/ 17 марта 2011

В настоящее время у меня есть консольная Python-программа, работающая под Windows.Программа сохраняет большую часть своих данных в памяти и периодически сохраняет данные на диск, или когда пользователь закрывает приложение с помощью события прерывания клавиатуры ( Ctrl + C ).

Проблема, с которой я столкнулся, заключается в том, что когда пользователь нажимает кнопку «X» в правом верхнем углу окна консоли, сеанс закрывается и данные в памяти теряются.То, что я ищу, это событие / сигнал или ловушка, чтобы я мог очистить память перед закрытием.

Я надеюсь сделать это без каких-либо внешних библиотек, хотя, если это невозможно, я быеще хотелось бы узнать, как это можно сделать.

1 Ответ

3 голосов
/ 17 марта 2011

В windows

, если вы используете pywin32, вы можете выполнить событие до закрытия консоли, я не уверен, что это скажет вам, кто или что закрывает ее, но, возможно, это даст вам половинупуть.Вы также можете проверить: Предотвратить закрытие консольного приложения ...

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

Для тех, кто сталкивается с этим и использует Linux ...

сигнал SIGHUP генерируется (сигнал зависает) при закрытии сеанса / окна SSH.

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
...