У чому сенс Ctrl-S?


135

Ctrl+ Sзупиняє весь вихід на термінал, який можна перезапустити з Ctrl+ Q.

Але, чому Ctrl+ Sіснує в першу чергу? Яку проблему намагалися вирішити, поставивши цю контрольну послідовність на місце?


5
Дивіться: linusakesson.net/programming/tty (прочитайте все, але особливо розділ про контроль потоку ...)
Олів’є Дулак

8
Використовував Ctrl-S / Ctrl-Q, щоб зберегти моє бекон багато разів, щоб зупинити вивіз повідомлення про помилки на ледь функціональній системі, щоб я міг побачити, що вони є.
DocSalvager

4
Як примітка боку, у мене є це в моєму .bashrcвідключити обидві функції: stty stop ''; stty start '';. Це Ctrl-S безкоштовно для використання в якості екрануючого символу для листя screen, з цим на мою .screenrc: escape ^Ss. Що в свою чергу означає, що я можу використовувати стандартний readlineярлик Ctrl-A для "початку рядка" (збігається з Ctrl-E для "кінця рядка", і менш крихкий до емуляції терміналу, ніж Home та End). : D
IMSoP

Відповіді:


155

Задовго до того, як були комп’ютери, існували телепринтери (він же телетайпмейкери, він же телетайпи). Подумайте про них як приблизно таку саму технологію, як телеграф, але з певним клавіатурою та певним принтером.

Оскільки телетайпи вже існували під час спочатку побудови комп’ютерів та через те, що комп’ютери в той час мали розміри кімнати, телетайпи стали зручним користувальницьким інтерфейсом для перших комп'ютерів - введіть команду, натисніть кнопку відправки, почекайте деякий час і Виведення команди друкується на аркуші паперу перед вами.

Контроль потоку програмного забезпечення зародився приблизно в цю епоху - якщо принтер не міг друкувати так швидко, як телетайп отримував дані, наприклад, телетайп може надіслати команду управління потоком XOFF ( Ctrl+ S) на віддалену сторону, кажучи "Зупинити передачу зараз" , а потім може надіслати команду управління потоком XON ( Ctrl+ Q) на віддалену сторону, кажучи: "Я наздогнав, будь ласка, продовжуйте".

І це використання зберігається в Unix, оскільки сучасні емулятори терміналів емулюють фізичні термінали (як vt100 ), які самі (певним чином) імітують телетипи.


29
Швидше за все, не "надруковано на аркуші паперу", а "надруковано на стопку фан-паперу".
Дубу

3
Або до РОЛЯ перфорованої стрічки!
mdpc

2
Я не думаю, що control-S і control-Q спочатку використовувались для запуску та зупинки виведення з комп'ютерів, а скоріше з зчитувачів паперових стрічок, приєднаних до інших телетайпів . Думаю, не було б великого інтересу до підключення телетипів до комп'ютерів до появи систем обміну часом. Інакше кожен раз, коли комп'ютер проводить очікування, коли користувач щось набере, це час, який він не витрачає на щось корисне.
supercat

2
Або до рулону 8½'' паперу.
Скотт

44
Ще в 1987 році я змусив полум’я останнього телетайпу, який вижив у моєму університеті. Використовували його як послідовний принтер і не розуміли, що він буде перегріватися, якщо його змусять друкувати 35 сторінок постійно. Перегрів просто пахнув, але потім папір загорілася через спеку. Тільки тоді вони сказали мені, що я повинен був давати Ctrl-S кожні 2 сторінки або близько того, щоб він охолодився на пару хвилин.
Тонні

25

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

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


Це те, що я чув (а не відповідь телепринтеру, хоча можливо (мабуть, навіть), що це причина збереження функціональності.) Я використовував для цього Cntr-S, коли виникали проблеми з більш-менш
Ліндон Уайт

2
Механічна потреба запуску / зупинки виходу виникла перед потребою людини мати можливість її читати!
TripeHound

@TripeHound: Дійсно, це прийшло задовго до того, як люди сподівались переглянути інформацію, поки вона отримана (хтось, хто з нетерпінням чекав на історію, може спостерігати, як її отримували телетайпи, але оператори зазвичай мали кращі речі робити).
supercat

21

До речі, якщо ви перераховуєте довгий вихід на екрані, ймовірність полягає в тому, що ви не обов'язково читаєте так швидко, як комп'ютер, який випльовує вихід. Використання CTRL-S / CTRL-Q на коті (або активному хвості) ДУЖЕ корисно для зупинки та відновлення виведення.


25
lessє більше.
dotancohen

2
@dotancohen: Дуже смішно. Навіть moreне був представлений до чотирьох-п'яти років після виходу першого Unix (із зображенням cat, але ніcat -v ). Зауважте також, що до Unix були й інші операційні системи обміну часом (інтерактивні) ; наприклад, RSTS .
Скотт,

2
@dotancohen я віддаю перевагу less, але люди кажуть, що, хоча lessє more, mostвсе-таки більше, ніж less!
Волкер Зігель

1
@VolkerSiegel: Дякую, що познайомили мене most! За випадковості, що вам відомо про програму, яка дозволяє побачити файл зображення (gif, jpg, png) над ssh на кліпі, я хотів би почути про це. Я зараз використовую asciiviewабо, img2txtале жоден із них не є задовільним.
dotancohen

2
@VolkerSiegel: Також дякую більшість ! Як каже автор: «Навіщо погоджуватися на менше?». Користувачі Debian можуть apt-get install most.
mivk

17

У стародавніх телетайпах із зчитувачем паперової стрічки отримання контрольного Q буде включати зчитувач паперової стрічки і починати надсилати символи зі стрічки так, ніби вони були введені на клавіатурі. Control-S відключить зчитувач паперової стрічки. Якщо вважати, що телевізійні спочатку призначені не для друку даних з комп'ютерів, а з інших телетипів, то повинно бути досить зрозуміло, як "вимкнути зчитувач паперових стрічок" можна було б розглянути як аналог "запиту іншого кінця, щоб припинити передачу".

Між іншим, control-R включив би паперовий стрічковий удар, таким чином, щоб кожен символ, отриманий телетекстом (або, якщо було включено локальне відлуння, набраний на клавіатурі), також потрапив на паперову стрічку; control-T відключить ударний папір. На відміну від операцій, пов'язаних з control-S і control-Q, однак, ці операції, здається, не мають сучасного еквівалента.

Крім того, оригінальні назви для control-Q / R / S / T були DC1 / DC2 / DC3 / DC4 ("Контроль пристрою 1" тощо). Хоча я не впевнений в історії, таке називання дозволяє припустити, що спочатку вони призначалися для того, щоб викликати певні дії, але найпоширеніше, що люди робили з DC1 та DC3, це контролювати сканер паперової стрічки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.