В чем смысл Ctrl-S?

В чем смысл Ctrl-S?

Ctrl+ Sостанавливает весь вывод на терминал, который можно перезапустить с помощью Ctrl+ Q.

Но почему Ctrl+ Sвообще существует? Какую проблему пытались решить, поместив эту контрольную последовательность?

решение1

Задолго до появления компьютеров существовалителетайпы(они же телетайпы, они же телетайпы). Представьте себе, что это примерно та же технология, что и телеграф, но с присоединенными к ним клавиатурой и принтером.

Поскольку телетайпы уже существовали, когда только создавались компьютеры, и поскольку компьютеры в то время были размером с комнату, телетайпы стали удобным пользовательским интерфейсом для первых компьютеров — введите команду, нажмите кнопку отправки, подождите некоторое время, и вывод команды будет распечатан на листе бумаги перед вами.

Управление потоком программного обеспечениявозник примерно в эту эпоху — например, если принтер не мог печатать так же быстро, как телетайп получал данные, телетайп мог отправить команду управления потоком XOFF ( Ctrl+ S) на удаленную сторону, говоря: «Прекратите передачу на время», а затем мог отправить команду управления потоком XON ( Ctrl+ Q) на удаленную сторону, говоря: «Я догнал, пожалуйста, продолжайте».

И это использование сохранилось в Unix, поскольку современные эмуляторы терминала эмулируют физические терминалы (например,vt100), которые сами по себе (в некотором смысле) имитировали телетайпы.

решение2

Это управляющий символ со времен терминалов VT100 и подобных. На этих терминалах изначально была ограниченная возможность прокрутки (если вообще была), а CTRL-S позволял заморозить вывод, чтобы увидеть то, что в данный момент находится на экране, без его списания.

Почти все, что вы видите в современных терминалах, было создано для имитации старых терминальных систем.

решение3

Кстати, если вы выводите длинный вывод на экран, скорее всего, вы не читаете так же быстро, как компьютер, который выдает вывод. Использование CTRL-S/CTRL-Q на кошке (или активном хвосте) ОЧЕНЬ полезно для остановки и возобновления вывода.

решение4

На древних телетайпах с устройством чтения бумажной ленты прием control-Q включал устройство чтения бумажной ленты и начинал отправлять символы с ленты, как будто они были набраны на клавиатуре. Control-S отключал устройство чтения бумажной ленты. Если учесть, что телетайпы изначально предназначались не для печати данных с компьютеров, а с других телетайпов, то должно быть совершенно ясно, как «выключить устройство чтения бумажной ленты» можно истолковать как аналог «просить другой конец прекратить передачу».

Кстати, control-R включает перфорацию бумажной ленты, так что каждый символ, полученный телетайпом (или, если включено локальное эхо, набранный на клавиатуре), также будет пробит на бумажной ленте; control-T выключает перфорацию бумажной ленты. Однако, в отличие от операций, связанных с control-S и control-Q, эти операции, похоже, не имеют современного эквивалента.

Кроме того, первоначальные названия control-Q/R/S/T были DC1/DC2/DC3/DC4 («Управление устройством 1» и т. д.). Хотя я не уверен в истории, такое наименование предполагает, что изначально они предназначались для запуска какого-то неопределенного вида действия, но чаще всего люди использовали DC1 и DC3 для управления устройством чтения перфоленты.

Связанный контент