Jaki jest sens Ctrl-S?


135

Ctrl+ Szatrzymuje wszystkie dane wyjściowe na terminalu, które można zrestartować za pomocą Ctrl+ Q.

Ale dlaczego w ogóle istnieje Ctrl+ S? Jaki problem próbował rozwiązać, wprowadzając tę ​​sekwencję kontrolną?


5
Zobacz: linusakesson.net/programming/tty (przeczytaj wszystko, ale zwłaszcza rozdział o kontroli przepływu ...)
Olivier Dulac

8
Użyłem Ctrl-S / Ctrl-Q, aby wiele razy zapisać mój boczek, aby zatrzymać niekontrolowane wyświetlanie komunikatów o błędach w ledwo funkcjonalnym systemie, dzięki czemu mogłem zobaczyć, co to jest.
DocSalvager,

4
Na marginesie, mam to w moim .bashrcwyłączyć obie funkcje: stty stop ''; stty start '';. Pozostawia to Ctrl-S za darmo do użytku jako znaku ewakuacji screen, ze w moim .screenrc: escape ^Ss. Co z kolei oznacza, że ​​mogę użyć standardowego readlineskrótu Ctrl-A do „początku linii” (w połączeniu z Ctrl-E do „końca linii” i mniej kruchej emulacji terminala niż Home i End). : D
IMSoP

Odpowiedzi:


155

Na długo przed pojawieniem się komputerów istniały teleprinterzy (aka teletypewriter, aka teletypy). Pomyśl o nich jako o takiej samej technologii jak telegraf, ale z jakimś typem klawiatury i drukarką.

Ponieważ teletypy istniały już podczas budowy komputerów, a ponieważ komputery w tym czasie miały wielkość pokoju, teletypy stały się wygodnym interfejsem użytkownika dla pierwszych komputerów - wpisz polecenie, naciśnij przycisk wysyłania, poczekaj chwilę, a wyjście polecenia jest drukowane na arkuszu papieru przed sobą.

Oprogramowanie do sterowania przepływem powstało w tym okresie - jeśli drukarka nie mogła drukować tak szybko, jak teletype odbierał dane, na przykład teletype mógł wysłać komendę sterowania przepływem XOFF ( Ctrl+ S) na stronę zdalną, mówiąc: „Na razie przestań nadawać” , a następnie może wysłać polecenie sterowania przepływem XON ( Ctrl+ Q) na stronę zdalną, mówiąc: „Nadrobiłem zaległości, proszę kontynuować”.

Takie zastosowanie przetrwało w Uniksie, ponieważ współczesne emulatory terminali emulują fizyczne terminale (takie jak vt100 ), które same (pod pewnymi względami) emulowały teletypy.


29
Najprawdopodobniej nie „wydrukowano na kartce papieru”, ale „wydrukowano na stosie papieru składanego wachlarzowo”.
Dubu

3
Lub do ROLKI perforowanej taśmy!
mdpc

2
Nie sądzę, że control-S i control-Q były początkowo używane do uruchamiania i zatrzymywania wyjścia z komputerów, ale raczej z czytników taśm papierowych podłączonych do innych rodzajów teletekstu . Nie sądzę, aby zainteresowanie teletypów komputerami było duże aż do pojawienia się systemów podziału czasu. W przeciwnym razie za każdym razem, gdy komputer spędza na oczekiwaniu na wpisanie przez użytkownika danych, nie spędza czasu na robieniu czegoś przydatnego.
supercat

2
Lub na rolkę 8½ʹʹ papieru.
Scott,

44
W 1987 roku ostatni teletyp, który przetrwał na moim uniwersytecie, stanął w płomieniach. Używał go jako drukarki szeregowej i nie zdawał sobie sprawy, że przegrzeje się, jeśli zostanie zmuszony do ciągłego drukowania 35 stron. Przegrzanie po prostu śmierdziało, ale potem papier zapalił się z powodu upału. Dopiero wtedy powiedzieli mi, że powinienem podawać Ctrl-S co 2 strony, aby ostygło przez kilka minut.
Tonny

25

Jest to znak kontrolny z czasów terminali VT100 i podobnych. Na tych terminalach istniała ograniczona możliwość przewijania (jeśli w ogóle), aby CTRL-S mógł zamrozić wyjście, aby zobaczyć, co jest aktualnie na ekranie bez zapisywania go.

Większość wszystkiego, co widzisz w nowoczesnych terminalach, zostało stworzonych, aby emulować te starsze systemy terminali.


Właśnie to usłyszałem (zamiast odpowiedzi teleprintera, chociaż możliwe jest (prawdopodobnie nawet), że właśnie z tego powodu taka funkcjonalność została zachowana). Użyłem Cntr-S do tego celu, gdy miałem problemy z mniej więcej
Lyndon White

2
Mechaniczna potrzeba uruchomienia / zatrzymania wyjścia pojawiła się, zanim człowiek musiał ją odczytać!
TripeHound,

@TripeHound: Rzeczywiście, pojawiło się na długo przed tym, zanim ludzie oczekiwali, że ludzie będą patrzeć na informacje podczas ich otrzymywania (ktoś, kto z niecierpliwością czekał na opowieść, może oglądać, jak została odebrana przez typ teletechniczny, ale operatorzy zwykle mieli lepsze rzeczy do zrobienia).
supercat

21

BTW, jeśli wyświetlasz długą listę wyników na ekranie, istnieje prawdopodobieństwo, że niekoniecznie czytasz tak szybko, jak komputer, który wyrzuca dane wyjściowe. Używanie CTRL-S / CTRL-Q na kocie (lub aktywnym ogonie) jest BARDZO przydatne do zatrzymania i wznowienia działania.


25
lessJest więcej.
dotancohen

2
@dotancohen: Bardzo zabawne. Nawet morenie został wprowadzony dopiero cztery lub pięć lat po wydaniu pierwszego Uniksa (gościnnie cat, ale niecat -v ). Zauważ też, że przed Unixem istniały inne systemy współdzielenia czasu (interaktywne) ; np . RSTS .
Scott,

2
@dotancohen Wolę less, ale ludzie mówią, że chociaż lessjest more, mostto wciąż więcej niż less!
Volker Siegel,

1
@VolkerSiegel: Dziękujemy za zapoznanie się z most! Przy okazji, że znasz program, który pozwala zobaczyć plik obrazu (gif, jpg, png) nad ssh na cli, chciałbym o nim usłyszeć. Używam obecnie asciiviewlub img2txtale nie są zadowalające.
dotancohen

2
@VolkerSiegel: Dziękujemy również za większość ! Jak mówi autor: „Dlaczego zadowalać się mniejszym kosztem?”. Użytkownicy Debiana mogą apt-get install most.
mivk

17

W starożytnych teletypach z czytnikiem taśmy papierowej odbiór klawisza sterującego Q włącza czytnik taśmy papierowej i rozpoczyna wysyłanie znaków z taśmy tak, jakby były wpisane na klawiaturze. Control-S wyłączyłby czytnik taśmy papierowej. Jeśli ktoś uważa, że ​​teletypy pierwotnie nie miały na celu drukowania danych z komputerów, ale raczej z innych teletypów, powinno być całkiem jasne, w jaki sposób „wyłączyć czytnik taśm papierowych” można interpretować jako analogię do „żądania od drugiego końca zaprzestania transmisji”.

Nawiasem mówiąc, control-R włączyłby dziurkacz na taśmie papierowej, tak że każdy znak odbierany przez typ teletechniczny (lub, jeśli włączone było lokalne echo, pisany na klawiaturze) również byłby dziurkowany na taśmie papierowej; Control-T wyłączyłby dziurkacz na taśmie papierowej. Jednak w przeciwieństwie do operacji związanych z control-S i control-Q, operacje te wydają się nie mieć współczesnego odpowiednika.

Ponadto pierwotne nazwy dla control-Q / R / S / T brzmiały DC1 / DC2 / DC3 / DC4 („Kontrola urządzeń 1” itp.). Chociaż nie jestem pewien historii, takie nazewnictwo sugerowałoby, że pierwotnie miały na celu wyzwolić jakiś nieokreślony rodzaj działania, ale najczęstszą rzeczą, jaką ludzie robili z DC1 i DC3, było kontrolowanie czytnika taśm papierowych.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.