Es gibt Linux-Programme, zum Beispiel vlc, die empfehlen, ctrl+ czweimal einzugeben, um die Ausführung von einem Terminal aus abzubrechen, wenn das Programm nicht nach dem ersten gestoppt wurde.
Warum sollte die Eingabe von ctrl+ czweimal funktionieren, wenn das erste Mal nicht funktioniert hat?
Antworten:
Was es tut, ist völlig anwendungsspezifisch. Wenn Sie ctrl+ drücken c, sendet der Terminalemulator ein SIGINT- Signal an die Vordergrundanwendung, das den entsprechenden "Signalhandler" auslöst. Der Standard-Signal-Handler für SIGINT beendet die Anwendung. Jedes Programm kann jedoch einen eigenen Signal-Handler für SIGINT installieren (einschließlich eines Signal-Handlers, der die Ausführung überhaupt nicht anhält).
Anscheinend installiert vlc einen Signal-Handler, der beim ersten Aufrufen versucht, eine Bereinigung / ordnungsgemäße Beendigung durchzuführen , und beim zweiten Aufrufen auf das Standardverhalten zurückgreift, bei dem die Ausführung sofort beendet wird.
quelle
SIGINT , das von Ctrl+ gesendete Signal C, weist ein Programm üblicherweise an, in seine Hauptbefehlsverarbeitungsschleife auszubrechen oder, wenn dies keinen Sinn ergibt, sauber zu beenden. Einige Programme führen eine Bereinigungsprozedur aus, wenn sie ein SIGINT erhalten. Wenn das Programm so durcheinander ist, dass die Bereinigung fehlschlägt, wird das Programm in einigen Programmen durch eine Sekunde Ctrl+ Csofort beendet. Dies zu tun, liegt bei jedem Programmautor.
Wenn ein zweite Ctrl+ Cwird das Programm nicht töten, versuchen Ctrl+ \, die senden SIGQUIT , ein heftiges (aber immer noch abfangbare Signal), oder versuchen Ctrl+ Zzu suspendieren das Programm und dann der
kill
Befehl (zBkill %1
welche sendet SIGTERM , ein konventionell weniger heftig Signal als SIGQUIT, um Job Nummer 1). Wenn alle Stricke reißen, tötet das Programm mitkill -KILL
, auch bekannt alskill -9
das uncatchable Signal sendet SIGKILL .quelle