Kürzlich habe ich einem der Programme hier im Forum etwas entdeckt, das ich leider nicht mehr wiederfinde ...
Beim Abbruch eines (Konsolen-)Programms mittels <Strg>-<C> wurde das vom Programm abgefangen, so dass vor dem tatsächlichen Terminieren z.B. noch Daten gesichert werden konnten.
Ergänzende Frage dazu: Gibt es so etwas auch für <Strg>-<D> ?
Kontrolliertes Ende nach KeyboardInterrupt
Du kannst den `KeyboardInterrupt` abfangen wie jede andere Ausnahme auch.
Strg-D (unter Windows Strg-Z) veranlasst das Terminal sein Ende der Pipe zu schliessen, die bei `sys.stdin` rein kommt. Das müsste man mit `sys.stdin.closed` testen können.
Strg-D (unter Windows Strg-Z) veranlasst das Terminal sein Ende der Pipe zu schliessen, die bei `sys.stdin` rein kommt. Das müsste man mit `sys.stdin.closed` testen können.
Habe gerade so etwas in einem Projekt drin, also schnell gepastet:
HTH
Christian
Code: Alles auswählen
import logging
import signal
def initialize_signal_handler(parent):
# set signal handler for keyboard interruptes
signal.signal(signal.SIGTERM, parent._onexit) # term
signal.signal(signal.SIGABRT, parent._onexit) # abort
signal.signal(signal.SIGINT, parent._onexit) # keyboard interrupt
class foo(object):
def __init__(self, ...):
....
initialize_signal_handler(self)
def _onexit(self, signum, frame):
...
logging.error("\n\nCaught signal %s, %s!" % (signum, frame))
Christian