Ctrl- Qце справді відповідь. Я думав, що я закинув би цю історію, яка занадто довга, щоб вписатись в поля правильної відповіді ak2 .
Ще в темну епоху термінал являв собою велику частину обладнання, яке з'єднувалося з віддаленим пристроєм (спочатку іншим терміналом, оскільки телетайпи були набагато легшими навчитися керувати, ніж телеграфний ключ) по довгому проводу або по телефонних лініях з модемами. На той час, коли Unix розроблявся, код ASCII вже був добре встановлений (хоча конкуруючий код EBCDIC від IBM все ще був силою, з яким слід рахуватися).
На ранніх терміналах зберігається друкований запис про кожен отриманий символ. Поки символи прибули не швидше, ніж друкована головка могла їх набрати, принаймні. Але як тільки термінали на основі CRT стали можливими, виникла проблема, що лише близько 25 рядків вміщується в CRT, а 25 рядків з 80 символів представляють достатню кількість оперативної пам’яті, що ніхто не задумувався серйозно про надання більшої кількості оперативної пам’яті для символів, які прокручувались вгорі екран.
Таким чином, була потрібна певна умова, щоб сигналізувати про те, що кінець надсилання повинен зробити паузу, щоб читач наздогнав.
7-бітний код ASCII містить 33 кодові точки, присвячені контрольним символам (від 0 до 31 і 127). Деякі з них були дійсно добре встановлені цілі, такі як NUL
(лідер порожній паперової стрічки для нарізування різьблення, щілин і стиків), DEL
( «перекресленим» символи на паперовій стрічці , зазначені пробивати всі сім отворів), BEL
(дзень!), CR
, LF
, І TAB
. Але чотири були визначені явним чином для керування самим термінальним пристроєм ( DC1
до DC4
aka Ctrl + Q, Ctrl + R, Ctrl + S і Ctrl + T).
Я найкраще здогадуюсь, що якийсь інженер подумав, що (у міру мнемоніки) "S" для "Стоп" і "Q" для "Продовжити" були не надто поганими, і призначали, DC3
що означають "будь ласка, припиніть надсилати" і DC1
означати "добре , продовжуйте надсилати зараз ".
Навіть ця конвенція була вже добре встановлена до того часу, коли Unix залишає гніздо в Bell Labs, щоб вийти у світ.
Конвенція відома як програмний контроль потоку і надзвичайно поширена в реальних серійних пристроях. Реалізувати це непросто, оскільки це перешкоджає використанню будь-якого з цих символів для будь-яких інших цілей на каналі зв'язку, і сигнал зупинки повинен оброблятися перед будь-якими очікуваними прийнятими символами, щоб уникнути надсилання більше, ніж може приймати кінець прийому ручка.
Якщо практично, використання переважних сигналів поза діапазону з послідовного потоку даних для управління потоком є переважним. На прямих провідних з'єднаннях, які можуть дозволити додатковий провід сигналу, ви знайдете апаратне рукостискання, яке звільняє цих символів для іншого використання.
Звичайно, сьогоднішнє вікно терміналу не використовує фактичний фізичний послідовний порт, має смуги прокрутки, і зовсім не потрібно рукостискання з програмним забезпеченням. Але конвенція зберігається.
Я пригадую твердження, що Річард Сталлман отримував скарги на його відображення Ctrl + S для інкрементального пошуку в перших випусках emacs, і що він був досить несимпатичним будь-якому користувачеві, який повинен був залежати від 7-бітного, програмного забезпечення, керованого потоком.
vim
і натискав Ctrl-S, щоб зберегти свої зміни. А-оXD