Ich habe ein wenig Python-Code zu versuchen und machen Raw_Input fangen Tastatur Interrupts. Wenn ich den Code in dieser Funktion benutze, funktioniert es einwandfrei. Aber wenn ich es in meinem Programm ausführe, wird die print-Anweisung nie gemacht, was anzeigt, dass der Tastatur-Interrupt nicht abgefangen wird. Das Programm versucht zu beenden und schlägt fehl, bis es zu SIGKILL eskaliert, was natürlich gut funktioniert. Meine Vermutung ist, dass irgendwo anders der Tastaturinterrupt abgefangen wird und die Ausnahme überhaupt nicht läuft. Meine Frage ist, wo würde solch ein Interrupt wahrscheinlich auftreten, und wie kann ich verhindern, dass er diesen unterbricht. Mein Plan war, eine leichte Verzögerung zwischen dem Programm, das eine Tastaturunterbrechung fängt und sich selbst tötet, hinzuzufügen, um hier einen Augenblick zu geben, um zu fangen.Catching Keyboard Interrupt mit Raw-Eingang
Irgendwelche Ideen geschätzt
Dank!
import sys
def interruptable_input(text=''):
'''Takes raw input, but accepts keyboard interrupt'''
try:
return raw_input(text)
except KeyboardInterrupt:
print "Interrupted by user"
sys.exit()
Einfach diese Funktion innerhalb einer interaktiven 2.7.10-Interpreter-Sitzung aufrufen und dann STRG + C drücken, druckt korrekt "Unterbrochen von Benutzer" und wird für mich beendet. Ich kann nicht reproduzieren, was Sie meinen ... –