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

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

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

111 голосов | спросил Jeff King 18 J0000006Europe/Moscow 2014, 18:28:42

4 ответа


131

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

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

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

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

ответил godlygeek 18 J0000006Europe/Moscow 2014, 18:42:21
25

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

Большинство всего, что вы видите в современных терминалах, было создано для эмуляции старых систем терминалов.

ответил Livinglifeback 18 J0000006Europe/Moscow 2014, 18:33:26
20

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

ответил mdpc 18 J0000006Europe/Moscow 2014, 21:37:44
17

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

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

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

ответил supercat 19 J0000006Europe/Moscow 2014, 03:21:31

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132