Ctrl- Qest en effet la réponse. Je pensais avoir ajouté une petite histoire trop longue pour tenir dans les marges de la bonne réponse de ak2 .
À l’époque des ténèbres, un terminal était un gros équipement connecté à un périphérique distant (à l’origine, un autre terminal, car les télétypes étaient beaucoup plus faciles à apprendre qu’une clé de télégraphe) sur un long fil ou via des lignes téléphoniques avec modems. Au moment où Unix se développait, le code ASCII était déjà bien établi (bien que le code EBCDIC concurrent d’IBM fût toujours une force avec laquelle il fallait compter).
Les premiers terminaux gardaient un enregistrement imprimé de chaque caractère reçu. Tant que les caractères n'arrivent pas plus vite que la tête d'impression ne peut les saisir, au moins. Mais dès que les terminaux à tube cathodique ont été possibles, le problème est que seulement environ 25 lignes tiennent sur le tube cathodique, et que 25 lignes de 80 caractères représentent suffisamment de RAM pour que personne ne songe sérieusement à fournir plus de RAM aux personnages qui ont défilé du début à la fin. l'écran.
Il fallait donc une convention pour signaler que l’envoyeur devrait faire une pause pour permettre au lecteur de se rattraper.
Le code ASCII à 7 bits comporte 33 points de code consacrés aux caractères de contrôle (0 à 31 et 127). Certains d' entre eux avaient des fins très bien établies, comme NUL
(chef blanc de bande de papier pour le filetage, les lacunes et les épissures), DEL
( « barré » caractères sur une bande de papier indiqué par poinçonnage sept trous), BEL
(ding!), CR
, LF
Et TAB
. Mais quatre ont été définis de manière explicite pour commander le dispositif terminal lui - même ( DC1
à DC4
aka Ctrl + Q, Ctrl + R, S et Ctrl + Ctrl + T).
Ma meilleure hypothèse est que certains ingénieurs ont pensé que (comme le disent les mnémoniques), "S" pour "Stop" et "Q" pour "Continuer" n'étaient pas si mauvais, et assignés DC3
à signifier "s'il vous plaît, arrêtez d'envoyer" et DC1
à signifier "ok , continuez à envoyer maintenant ".
Même cette convention était déjà bien établie au moment où Unix quittait son nid chez Bell Labs pour aller dans le monde.
La convention est connue sous le nom de contrôle de flux logiciel et est extrêmement courante dans les périphériques série réels. Il n'est pas facile à mettre en œuvre correctement, car cela empêche l'utilisation de l'un de ces caractères à toute autre fin dans le canal de communication, et le signal d'arrêt doit être traité avant tout caractère reçu en attente pour éviter d'envoyer davantage que le destinataire ne peut en envoyer. manipuler.
Si possible, l’utilisation de signaux supplémentaires hors bande du flux de données série pour le contrôle de flux est grandement préférable. Sur les connexions directement câblées qui peuvent se permettre les câbles de signal supplémentaires, vous découvrirez que la liaison matérielle est utilisée, ce qui libère ces caractères pour d'autres utilisations.
Bien entendu, la fenêtre de terminal actuelle n’utilise pas de port série physique, elle est dotée de barres de défilement et n’a pas vraiment besoin d’une liaison logicielle. Mais la convention persiste.
Je me souviens de l'affirmation selon laquelle Richard Stallman aurait reçu des plaintes concernant sa correspondance entre Ctrl + S et la recherche incrémentielle dans les premières versions d'Emacs, et qu'il était plutôt antipathique envers tout utilisateur qui devait dépendre d'une connexion à 7 bits à contrôle de logiciel.
vim
et j'ai appuyé sur Ctrl-S pour enregistrer mes modifications. Uh-ohXD