Seite 1 von 1

Programm mit KeyboardInterrupt sicher beenden.

Verfasst: Montag 24. August 2009, 11:41
von whaeva
Ich habe mal ein Beispielcode gesehen, das über eine Art hook oder irgendwas mit signals die Exception KeyboardInterrupt abgefangen, und dann an anderer Stelle definiert das Programm beendet hat.
Finde ich leider nicht wieder - weiß jemand, was ich meine und kann mich dahin führen?
Danke, whaeva

Verfasst: Montag 24. August 2009, 11:45
von EyDu

Code: Alles auswählen

>>> import time
>>> def func():
...     time.sleep(0.5)
...
>>> def main():
...     try:
...         while True:
...             func()
...     except KeyboardInterrupt:
...         print "Beenden"
...
>>> main()
^CBeenden
>>>

Verfasst: Montag 24. August 2009, 12:41
von whaeva
Mhh, die ganze Main als try..except auszuführen...erscheint mir nicht kunstvoll :-)
Ist eine Möglichkeit, aber eigentlich nicht, was ich suche. Danke trotzdem!

Verfasst: Montag 24. August 2009, 12:55
von whaeva

Verfasst: Montag 24. August 2009, 13:00
von lunar
Du kannst auch über das "signal"-Modul die Signal-Routine für SIGINT ändern. Dann wird KeyboardInterrupt erst gar nicht ausgelöst. Die Ausnahme halte ich persönlich aber für eleganter.

Verfasst: Montag 24. August 2009, 13:21
von Rebecca
Wenn es dir nicht nur um KeyboardInterrupts geht, gibt's auch noch [mod]atexit[/mod], aber ansonsten wuerde ich auch den Weg ueber Exceptions waehlen.

Verfasst: Montag 24. August 2009, 17:21
von whaeva
Danke für die Hilfe. Ich habe es in der Zwischenzeit auf dem einfachsten Weg mit der Exception gemacht.