Was ist der Sinn von Strg-S?

135

Ctrl+ Sstoppt alle Ausgaben an das Terminal, die mit Ctrl+ neu gestartet werden können Q.

Aber warum existiert Ctrl+ überhaupt S? Welches Problem wollte man lösen, indem man diese Kontrollsequenz einrichtete?

Jeff King
quelle
5
Siehe: linusakesson.net/programming/tty (alles lesen, aber vor allem den Abschnitt über Flow Control ...)
Olivier Dulac
8
Habe mit Strg-S / Strg-Q viele Male meinen Speck gespart, um die Ausgabe von Fehlermeldungen auf einem kaum funktionierenden System zu stoppen, damit ich sehen konnte, was sie waren.
DocSalvager
4
Als Randbemerkung, habe ich dies in meinen .bashrcbeiden Funktionen deaktivieren: stty stop ''; stty start '';. Dies läßt Strg-S frei für den Einsatz als Escape - Zeichen für screen, mit dieser in meinem .screenrc: escape ^Ss. Was wiederum bedeutet, dass ich die Standard- readlineTastenkombination Strg-A für "Zeilenanfang" verwenden kann (zusammen mit Strg-E für "Zeilenende" und weniger anfällig für die Terminal-Emulation als Home und End). : D
IMSoP

Antworten:

155

Lange bevor es Computer gab, gab es Ferndrucker (auch bekannt als Teletypewriters, auch bekannt als Teletypes). Stellen Sie sich sie als ungefähr die gleiche Technologie wie einen Telegraphen vor, aber mit einer Art Tastatur und einer Art Drucker, die an sie angeschlossen sind.

Da es bereits Teletypen gab, als die Computer zum ersten Mal gebaut wurden, und die Computer zu dieser Zeit raumgroß waren, wurden Teletypen zu einer praktischen Benutzeroberfläche für die ersten Computer. Geben Sie einen Befehl ein, drücken Sie die Senden-Taste, warten Sie eine Weile und drücken Sie die Die Ausgabe des Befehls wird auf ein Blatt Papier vor Ihnen gedruckt.

Die Software-Flusskontrolle entstand in dieser Zeit - wenn der Drucker nicht so schnell drucken konnte, wie der Teletyp Daten empfing, konnte der Teletyp zum Beispiel einen XOFF-Flusskontrollbefehl ( Ctrl+ S) an die Gegenseite senden , der besagte: "Jetzt Übertragung stoppen". und könnte dann den XON-Flusskontrollbefehl ( Ctrl+ Q) an die Gegenseite senden und sagen: "Ich habe aufgeholt, bitte fahren Sie fort".

Und diese Verwendung überlebt in Unix, weil moderne Terminalemulatoren physische Terminals (wie das vt100 ) emulieren, die selbst (in gewisser Weise) Teletypen emulieren.

godlygeek
quelle
29
Höchstwahrscheinlich nicht "auf ein Blatt Papier gedruckt", sondern "auf einen Stapel Endlospapier gedruckt".
Dubu
3
Oder zu einer Rolle Lochstreifen!
mdpc
2
Ich glaube nicht, dass control-S und control-Q ursprünglich verwendet wurden, um die Ausgabe von Computern zu starten und zu stoppen, sondern von Papierkassettenlesern, die an andere Teletypen angeschlossen sind . Ich glaube, es hätte bis zum Aufkommen von Time-Sharing-Systemen kein großes Interesse daran gegeben, Teletypen an Computer anzuschließen. Andernfalls ist es immer dann Zeit, wenn ein Computer darauf wartet, dass ein Benutzer etwas eingibt, nicht erforderlich, etwas Nützliches zu tun.
Supercat
2
Oder auf eine Rolle 8½ʹʹ Papier.
Scott
44
Bereits 1987 ließ ich den letzten in meiner Universität überlieferten Fernschreiber in Flammen aufgehen. Verwendete es als seriellen Drucker und wusste nicht, dass es sich überhitzen würde, wenn 35 Seiten ununterbrochen gedruckt werden müssten. Die Überhitzung roch nur schlecht, aber dann fing das Papier wegen der Hitze Feuer. Erst dann sagten sie mir, ich hätte ungefähr alle zwei Seiten eine Strg-S-Taste verwenden sollen, um es ein paar Minuten lang abkühlen zu lassen.
Tonny
25

Es ist ein Steuerzeichen aus der Zeit der VT100-Terminals und ähnliches. Es gab eine eingeschränkte Bildlauffunktion (falls vorhanden) auf diesen Terminals, um mit STRG-S zu beginnen, sodass Sie die Ausgabe einfrieren konnten, um zu sehen, was aktuell auf dem Bildschirm angezeigt wird, ohne dass dies abgeschrieben wird.

Fast alles, was Sie in modernen Terminals sehen, wurde eingerichtet, um diese älteren Terminalsysteme zu emulieren.

LivingLifeback
quelle
Dies ist, was ich gehört habe (und nicht die Antwort des Fernschreibers, obwohl es (wahrscheinlich sogar) möglich ist, dass dies der Grund ist, warum diese Funktionalität erhalten blieb.) Ich habe Cntr-S für diesen Zweck verwendet, wenn Probleme mit mehr oder weniger auftraten
Lyndon White
2
Die mechanische Notwendigkeit, die Ausgabe zu starten / zu stoppen, kam, bevor der Mensch sie lesen kann!
TripeHound
@TripeHound: Tatsächlich gab es lange Zeit keine bestimmte Erwartung, dass Menschen die Informationen betrachten würden, während sie empfangen wurden (jemand, der eifrig auf eine Geschichte wartete, könnte zusehen, wie sie von einem Fernschreiber empfangen wurden, aber die Betreiber hatten normalerweise bessere Dinge machen).
Supercat
21

Übrigens, wenn Sie eine lange Ausgabe auf Ihrem Bildschirm anzeigen, ist die Wahrscheinlichkeit groß, dass Sie nicht unbedingt so schnell lesen wie der Computer, der die Ausgabe ausgibt. Die Verwendung von STRG-S / STRG-Q bei einer Katze (oder einem aktiven Schwanz) ist SEHR nützlich, um die Ausgabe anzuhalten und fortzusetzen.

mdpc
quelle
25
lessist mehr.
Dotancohen
2
@dotancohen: Sehr lustig. Even morewurde erst vier oder fünf Jahre nach der Veröffentlichung des ersten Unix (mit cat, aber nichtcat -v ) vorgestellt. Beachten Sie auch, dass es vor Unix andere (interaktive) Timesharing-Betriebssysteme gab . zB RSTS .
Scott
2
@dotancohen Ich bevorzuge less, aber die Leute sagen, dass, solange es lessist more, mostist immer noch mehr als less!
Volker Siegel
1
@VolkerSiegel: Danke, dass du mich vorgestellt hast most! Wenn Sie ein Programm kennen, mit dem Sie eine Bilddatei (gif, jpg, png) über ssh auf dem CLI sehen können, würde ich gerne davon hören. Ich benutze derzeit asciiviewoder img2txtaber keine sind zufriedenstellend.
Dotancohen
2
@VolkerSiegel: Danke auch für die meisten ! Wie der Autor sagt: "Warum mit weniger zufrieden sein?" Debian-Benutzer können apt-get install most.
Mivk
17

Bei alten Fernschreibern mit einem Lesegerät für Papierkassetten würde der Empfang eines Kontroll-Q das Lesegerät für Papierkassetten einschalten und das Senden von Zeichen von der Kassette beginnen, als ob sie über die Tastatur eingegeben worden wären. Control-S würde den Papierstreifenleser ausschalten. Wenn man bedenkt, dass Teletypen ursprünglich nicht dazu gedacht waren, Daten von Computern zu drucken, sondern von anderen Teletypen, sollte es ziemlich klar sein, wie "Papierbandleser ausschalten" als analog zu "Anderes Ende auffordern, die Übertragung zu stoppen" ausgelegt werden könnte.

Übrigens würde Control-R den Lochstreifen einschalten, sodass jedes Zeichen, das vom Fernschreiber empfangen (oder, wenn lokales Echo aktiviert war, über die Tastatur eingegeben) wurde, auch auf den Lochstreifen gestanzt wird. control-T schaltete den Locher aus. Im Gegensatz zu den mit control-S und control-Q verbundenen Operationen scheinen diese Operationen jedoch kein modernes Äquivalent zu haben.

Die ursprünglichen Namen für control-Q / R / S / T lauteten ebenfalls DC1 / DC2 / DC3 / DC4 ("Gerätesteuerung 1" usw.). Ich bin mir der Vorgeschichte nicht sicher sollten eine nicht spezifizierte Art von Aktion auslösen, aber das häufigste, was Menschen mit DC1 und DC3 taten, war die Steuerung des Papierbandlesegeräts.

Superkatze
quelle