Ctrl- Qэто действительно ответ. Я думал, что добавлю небольшую историю этого, которая слишком длинна, чтобы вписаться в рамки правильного ответа ak2 .
Еще в темные времена терминал был большой частью оборудования, которое подключалось к удаленному устройству (первоначально другому терминалу, потому что телетайпам было намного легче научиться работать, чем к телеграфному ключу) по длинному проводу или по телефонным линиям с модемами. Ко времени разработки Unix код ASCII уже был хорошо установлен (хотя конкурирующий код EBCDIC от IBM все еще был силой, с которой нужно считаться).
Самые ранние терминалы хранили распечатанную запись каждого полученного символа. Пока символы поступают не быстрее, чем печатающая головка может их набрать, по крайней мере. Но как только терминалы на основе ЭЛТ стали возможными, возникла проблема, заключающаяся в том, что на ЭЛТ помещалось всего около 25 строк, а 25 строк по 80 символов представляли достаточно ОЗУ, и никто всерьез не задумывался о предоставлении большего объема ОЗУ для символов, которые прокручивались сверху. экран.
Таким образом, требовалось некоторое соглашение, чтобы сигнализировать, что отправляющая сторона должна сделать паузу, чтобы позволить читателю догнать.
7-битный код ASCII имеет 33 кодовых пункта, предназначенных для управляющих символов (от 0 до 31 и 127). Некоторые из них были действительно хорошо установленные цели, такие как NUL
(лидер пустой бумажной ленты для нарезания резьбы, щелей и стыков), DEL
( «перечеркнутым» символы на бумажной ленте , указанные пробивать все семь отверстий), BEL
(динь!), CR
, LF
, И TAB
, Но четыре были определены в явном виде для управления самого терминального устройства ( DC1
к DC4
аке Ctrl + Q, Ctrl + R, Ctrl + S и Ctrl + T).
Мое предположение состоит в том, что некоторые инженеры думали, что (как мнемоника), «S» для «Стоп» и «Q» для «Продолжить» были не слишком плохими, и им присвоено DC3
значение «пожалуйста, прекратите отправку» и DC1
«хорошо» , продолжить отправку сейчас ".
Даже это соглашение было уже хорошо разработано к тому времени, когда Unix покинул гнездо в Bell Labs, чтобы выйти в мир.
Соглашение известно как управление потоком программного обеспечения и чрезвычайно распространено в реальных последовательных устройствах. Это нелегко реализовать правильно, так как это предотвращает использование любого из этих символов для каких-либо других целей в канале связи, и сигнал Стоп должен обрабатываться перед любыми ожидающими принятыми символами, чтобы избежать отправки больше, чем может получить принимающая сторона ручка.
Если это целесообразно, использование дополнительных сигналов вне полосы из последовательного потока данных для управления потоком является чрезвычайно предпочтительным. На подключениях с прямым проводом, которые могут предоставить дополнительные сигнальные провода, вы найдете аппаратное рукопожатие в использовании, которое освобождает эти символы для других целей.
Конечно, сегодняшнее окно терминала не использует реальный физический последовательный порт, имеет полосы прокрутки и вообще не нуждается в программном подтверждении связи. Но конвенция сохраняется.
Я вспоминаю утверждение о том, что Ричард Столлман получал жалобы на его сопоставление Ctrl + S с инкрементным поиском в первых выпусках emacs, и что он был довольно не симпатичен любому пользователю, который должен был зависеть от 7-битного, управляемого программным потоком соединения.
vim
и нажал Ctrl-S, чтобы сохранить свои изменения. Uh-ohXD