Programm mit KeyboardInterrupt sicher beenden.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
whaeva
User
Beiträge: 66
Registriert: Mittwoch 25. Februar 2009, 15:30

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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Code: Alles auswählen

>>> import time
>>> def func():
...     time.sleep(0.5)
...
>>> def main():
...     try:
...         while True:
...             func()
...     except KeyboardInterrupt:
...         print "Beenden"
...
>>> main()
^CBeenden
>>>
Das Leben ist wie ein Tennisball.
whaeva
User
Beiträge: 66
Registriert: Mittwoch 25. Februar 2009, 15:30

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!
whaeva
User
Beiträge: 66
Registriert: Mittwoch 25. Februar 2009, 15:30

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.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
whaeva
User
Beiträge: 66
Registriert: Mittwoch 25. Februar 2009, 15:30

Danke für die Hilfe. Ich habe es in der Zwischenzeit auf dem einfachsten Weg mit der Exception gemacht.
Antworten