2017-11-24 2 views
1

Also habe ich control-z verwendet, um meine Python-Skripte zu stoppen, aber ich habe kürzlich festgestellt, dass sie noch im Aktivitätsmonitor aktiv waren und sie nur beenden können Dort. Control-C funktioniert nicht und druckt nur^C aus. Vielleicht wurde die Combo neu zugeordnet? Irgendwelche Vorschläge, wie ich das herausfinden kann.Beende Python im Terminal (control-C nur Drucken^C) macOS 10.12

+0

Danke für Ihre Hilfe. Problem gelöst! – bbrodsky

+0

Ausgezeichnet! Ich habe meine Kommentare als Antwort gepostet. Könnten Sie bitte sagen, was Sie getan haben, um das Problem zu lösen? – cdarke

+0

Ctrl-D wird normalerweise so zugeordnet, dass EOF in Shells interaktiv gesendet werden. – bipll

Antwort

1

Standardmäßig setzt CTRL+Z einen Prozess aus und versetzt ihn in den Hintergrund, siehe man bash und suchen Sie nach Jobsteuerung.

Auf der OS X Standard-Bash sendet CTRL+C ein SIGINT (Interrupt-Signal) in den Vordergrund Prozess aber druckt auch 10. SIGINT kann vom laufenden Prozess ignoriert oder bearbeitet werden.

standardmäßig Python behandelt SIGINT und wandelt es in ein einem KeyboardException Wenn Ihre Scripts eine allgemeine Ausnahme wie except Exception: oder ähnlich (eine sehr schlechte Idee) behandeln, dann könnte es die CTRL+C ignorieren.

Überprüfen Sie Ihre Skripts auf Signalbehandlung und allgemeine Ausnahmebehandlung.

für Remapping auf dem Terminaltyp für ccharsstty -a und schauen Um zu überprüfen, und Sie sollten intr = ^C; und susp = ^Z; sehen.

+1

Danke, mein Programm hatte einen asynchronen Handler, der das SIGINT blockierte. – bbrodsky

Verwandte Themen