Wenn ich versuche, etwas zu stoppen, benutze ich ^C
und manchmal ^D
im Terminal.
Was ist der Unterschied zwischen den beiden? Warum ein Programm nicht reagiert ^C
, aber ^D
. Warum wird die Terminal.app nur beendet, wenn ich sie verwende ^D
?
terminal
terminal.app
Prosseek
quelle
quelle
Antworten:
CtrlCWeist das Terminal an, einen
SIGINT
an den aktuellen Vordergrundprozess zu senden , was standardmäßig zum Beenden der Anwendung führt. CtrlDteilt dem Terminal mit, dass es eine EOF für die Standardeingabe registrieren soll, die als Verlangen nach dem Verlassen interpretiert wird.quelle
Ctrl+ D(
^D
) bedeutet Dateiende . Es funktioniert nur am Anfang einer Zeile (ich vereinfache etwas) und hat keine Auswirkung, wenn das Programm keine Eingaben vom Terminal liest.^D
Sagte der Shell in deinem Experiment, dass du keine Befehle mehr eingeben würdest, und sie wurde beendet. dann verließ das Terminal, weil sein Unterprogramm beendet worden war.Ctrl+ C(
^C
) bedeutet "unterbrechen", dh aufhören, was Sie tun. Technisch gesehen^C
sendet Drücken von das INT-Signal , das standardmäßig eine Anwendung beendet, in vielen Programmen jedoch bedeutet, dass Sie zur obersten Ebene zurückkehren (z. B. in einer Shell, beenden Sie die Eingabe einer Befehlszeile und kehren Sie zu einer ursprünglichen Eingabeaufforderung zurück).Wenn ein Programm nicht reagiert,
^C
können Sie Ctrl+ \(^\
) versuchen . Dadurch wird das Signal QUIT gesendet , das standardmäßig eine Anwendung beendet und von weniger Programmen abgefangen wird.Eine weitere Taste, die ein Signal sendet, ist Ctrl+ Z(
^Z
). Es sendet das TSTP-Signal , das das im Vordergrund laufende Programm anhält . (TSTP ist die Abkürzung für „Terminal Stop“. Es ähnelt STOP , TSTP kann jedoch ignoriert werden, STOP jedoch nicht.) Von der Shell aus können Sie die Ausführung des Programms mit demfg
Befehl (Resume im Vordergrund) oder dembg
Befehl (Resume im Vordergrund) fortsetzen Hintergrund).Alle diese Tasten können mit dem
stty
Befehl geändert werden . Einige Programme, insbesondere Vollbildprogramme mit Tastenbelegung, deaktivieren diese.quelle
KeyboardInterrupt
? Es wird mit Strg + d (wenn am Anfang einer Zeile) und mit Strg + \ beendet.Nachstehend ein Beispiel zu den beiden wirklich guten Antworten:
Wenn Sie
python
die Shell eingeben, gelangen Sie zur >>> Eingabeaufforderung von Python.Nun, wenn Sie treffen
Ctrl+C
, wird es sagenKeyboardInterrupt
und in der >>> bleiben.Wenn Sie in eine for-Schleife eintreten, z. B. durch Eingabe, wird
for x in (text):
darauf gewartet, dass Sie mit einer ... -Aufforderung weitere Zeichen eingeben. Wenn SieCtrl+C
jetzt drücken, wird die for-Anweisung beendet und zur >>> -Aufforderung zurückgekehrt,wenn Sie drücken
Ctrl+D
Egal ob in >>> oder ... es wird die Python-Eingabeaufforderung verlassen und zur ursprünglichen Shell zurückgekehrt.Wenn ssh auf einen anderen Computer übertragen
Ctrl+C
wird, beendet a alle vorhandenen Befehle,Ctrl+D
führt dies aus und beendet den Computer ebenfalls. (DerDelete
Schlüssel ist auch der gleiche wie bei aCtrl+D
)quelle