Was ist der Unterschied zwischen ^ S und ^ Z in einem Terminal?

3487
Eugene Yarmash

Wenn Sie einen Terminalemulator verwenden, können Sie das aktuell laufende Programm mit CTRL-Zoder stoppen CTRL-S. Was ist der Unterschied zwischen diesen Steuerzeichen?

6
http://superuser.com/questions/243460/what-to-do-when-ctrl-c-cant-kill-a-process/243472#243472 akira vor 13 Jahren 0

2 Antworten auf die Frage

4
Phil

Es ist der Unterschied zwischen den "Stop" - und "Suspend" -Aktionen des Terminals.

Durch das Stoppen der Ausgabe mit Strg-S wird der Prozess nicht angehalten. es stoppt nur die Ausgabe an das Terminal (fortsetzen mit Strg-Q / "start").

Durch das Anhalten eines Prozesses mit Strg-Z wird der Prozess tatsächlich beendet, und der Prozess wird in einen anderen Status versetzt als in ps (Status "T"). Fahren Sie mit "fg" oder "bg" fort, um den Vorgang im Vordergrund bzw. Hintergrund fortzusetzen.

"Stattdessen stoppt es einfach die Ausgabe an das Terminal" - die Anwendung wird normalerweise als Nebeneffekt angehalten Eugene Yarmash vor 13 Jahren 0
Wenn die App versucht, vom Terminal zu lesen bzw. auf das Terminal zu schreiben, wird sie angehalten, ja. Wenn nicht, läuft die App weiter. Dies ist einer der wesentlichen Unterschiede zwischen den beiden Methoden. Phil vor 13 Jahren 0
Randbemerkung: Viele Shells unterstützen [Strg-Y, um einen Prozess in den Hintergrund zu stellen, und setzen nur bei der ersten Anforderung für die Terminal-Eingabe aus. Dies ist bekannt als verzögertes Aussetzen] (http://www.gnu.org/software/bash/manual/bashref.html#Job-Control-Basics) _ sehe vor 13 Jahren 0
... oder genauer "Blöcke". minmaxavg vor 8 Jahren 0
3
cularis

CTRL- Zsendet das SIGSTOPSignal, wodurch das Programm angehalten wird.

Mit

fg 

oder

bg 

Sie können SIGCONTes im Front- oder Hintergrund senden und starten.

CTRL- Sstoppt einfach die Ausgabe von Daten an das Terminal. ( XOFF) Sie können es mit CTRL- wieder einschalten Q. ( XON)

Eine kleine Korrektur: Control-Z sendet SIGTSTP, nicht SIGSTOP. Ein wichtiger Unterschied besteht darin, dass Programme SIGTSTP abfangen oder ignorieren können, nicht aber SIGSTOP. Programme fangen möglicherweise TSTP ab und führen Bereinigungsvorgänge durch, bevor die Ausführung angehalten wird. STOP bewirkt jedoch, dass der Prozess ohne vorherige Benachrichtigung angehalten wird. Chris Page vor 13 Jahren 0