Quel est le point de Ctrl-S?


135

Ctrl+ Sarrête toutes les sorties vers le terminal qui peuvent être redémarrées avec Ctrl+ Q.

Mais pourquoi Ctrl+ Sexiste-t-il en premier lieu? Quel problème essayait-on de résoudre en mettant en place cette séquence de contrôle?


5
Voir: linusakesson.net/programming/tty (tout lire, mais surtout la section sur le contrôle de flux ...)
Olivier Dulac le

8
J'ai utilisé Ctrl-S / Ctrl-Q pour sauvegarder mon bacon à plusieurs reprises afin d'arrêter la sortie incontrôlée de messages d'erreur sur un système à peine fonctionnel, afin que je puisse voir ce qu'ils étaient.
DocSalvager

4
Comme une note de côté, j'ai dans mon .bashrcdésactiver les deux fonctions: stty stop ''; stty start '';. Cela laisse libre à utiliser comme caractère d'échappement pour Ctrl-S screen, avec dans mon .screenrc: escape ^Ss. Ce qui à son tour signifie que je peux utiliser le readlineraccourci standard Ctrl-A pour "début de ligne" (correspondant à Ctrl-E pour "fin de ligne" et moins fragile pour l'émulation de terminal que Home et End). : D
IMSoP Le

Réponses:


155

Bien avant les ordinateurs, il y avait des téléimprimeurs (téléscripteurs, télétypes). Considérez-les comme une technologie à peu près identique à celle d’un télégraphe, mais avec un type de clavier et d’imprimante associé.

Comme les télétypes existaient déjà lors de la construction initiale des ordinateurs et que ceux-ci étaient alors de la taille d'une pièce, ils sont devenus une interface utilisateur pratique pour les premiers ordinateurs - saisissez une commande, appuyez sur le bouton d'envoi, attendez un moment, puis appuyez sur la touche la sortie de la commande est imprimée sur une feuille de papier devant vous.

Le contrôle de flux logiciel est apparu aux alentours de cette époque - par exemple, si l'imprimante ne pouvait pas imprimer aussi rapidement que le télétype recevait des données, il pouvait envoyer une commande de contrôle de flux XOFF ( Ctrl+ S) au côté distant en disant "Arrêtez de transmettre pour l'instant". , et pourrait ensuite envoyer la commande de contrôle de flux XON ( Ctrl+ Q) au côté distant en disant "J'ai rattrapé, veuillez continuer".

Et cet usage survit sous Unix car les émulateurs de terminaux modernes émulent des terminaux physiques (comme le vt100 ) qui eux-mêmes émulaient (à certains égards) des télétypes.


29
Probablement pas "imprimé sur une feuille de papier" mais "imprimé sur une pile de papier en paravent".
Dubu

3
Ou à un rouleau de ruban perforé!
Mdpc

2
Je ne pense pas que control-S et control-Q aient été initialement utilisés pour démarrer et arrêter la sortie à partir d'ordinateurs, mais plutôt à partir de lecteurs de bande de papier reliés à d' autres télétypes . Je ne pensais pas qu'il y aurait eu beaucoup d'intérêt à connecter des télétypes à des ordinateurs avant l'avènement des systèmes à temps partagé. Sinon, chaque fois qu'un ordinateur passe à attendre qu'un utilisateur tape quelque chose, c'est qu'il ne passe pas à faire quelque chose d'utile.
Supercat

2
Ou sur un rouleau de papier 8½ʹʹ.
Scott

44
En 1987, j'ai fait flamber le dernier télétype qui avait survécu dans mon université. Utilisé comme imprimante série et ne réalisant pas qu'il surchaufferait s'il était obligé d'imprimer 35 pages en continu. La surchauffe sentait mauvais, mais le papier a pris feu à cause de la chaleur. Ce n’est qu’alors qu’ils m’ont dit que j’aurais dû donner un Ctrl-S toutes les 2 pages environ pour le laisser refroidir pendant quelques minutes.
Tonny

25

C'est un personnage de contrôle de l'époque des terminaux VT100 et similaires. La capacité de défilement (le cas échéant) était limitée sur ces terminaux. CTRL-S vous permettait de geler la sortie pour afficher ce qui est actuellement à l'écran sans que celui-ci ne soit supprimé.

Presque tout ce que vous voyez dans les terminaux modernes a été mis en place pour imiter ces anciens systèmes de terminaux.


C’est ce que j’ai entendu (plutôt que la réponse du téléimprimeur, même s’il est possible (probablement même) que c’est la raison pour laquelle cette fonctionnalité a été préservée). J’ai utilisé Cntr-S à cette fin, lorsque je rencontrais des problèmes
Lyndon White

2
Le besoin mécanique de démarrer / arrêter la sortie est venu avant le besoin humain de pouvoir le lire!
TripeHound

@TripeHound: En effet, bien avant que l'on s'attende à ce que les humains examinent les informations tant qu'elles sont reçues (une personne qui attendait avec impatience une histoire peut voir qu'elle est reçue par un télétype, mais les opérateurs avaient généralement de meilleures choses faire).
Supercat

21

Si vous listez une longue sortie sur votre écran, il est probable que vous ne lisiez pas nécessairement aussi vite que l'ordinateur qui a envoyé la sortie. Utiliser CTRL-S / CTRL-Q sur un chat (ou une queue active) est TRÈS utile pour arrêter et reprendre la sortie.


25
lessest plus.
dotancohen

2
@ docancohen: très drôle. Même moren’a été présenté que quatre ou cinq ans après la publication du premier Unix (avec cat, mais pascat -v ). Notez également qu’il existait d’autres systèmes d’exploitation en temps partagé (interactif) avant Unix; par exemple, RSTS .
Scott

2
@dotancohen je préfère less, mais les gens disent que, tout en lessest more, mostest encore plus less!
Volker Siegel

1
@VolkerSiegel: Merci de me présenter most! Si vous connaissez un programme qui permet de voir un fichier image (gif, jpg, png) au-dessus de ssh sur la cli, j'aimerais en entendre parler. J'utilise actuellement asciiviewou img2txtmais ni sont satisfaisants.
dotancohen

2
@VolkerSiegel: Merci également pour la plupart ! Comme le dit l'auteur: "Pourquoi se contenter de moins?". Les utilisateurs de Debian peuvent apt-get install most.
mardi

17

Sur les anciens télétypes équipés d'un lecteur de bande papier, la réception d'un Control-Q allumait le lecteur de bande papier et commençait à envoyer les caractères de la bande comme s'ils avaient été saisis au clavier. Control-S éteindrait le lecteur de bande papier. Si l'on considère que les télétypes n'étaient initialement pas destinés à imprimer des données à partir d'ordinateurs, mais plutôt à partir d'autres télétypes, il devrait être assez clair comment "éteindre le lecteur de bande papier" pourrait être interprété comme étant analogue à "demander à l'autre bout de cesser de transmettre".

Incidemment, Control-R activerait la perforation de la bande de papier de sorte que chaque caractère reçu par le télétype (ou, si l’écho local était activé, soit saisi au clavier) soit également perforé de la bande de papier; control-T éteindrait le perforateur de papier. Contrairement aux opérations associées à control-S et à control-Q, toutefois, ces opérations ne semblent pas avoir d’équivalent moderne.

De plus, les noms originaux pour le contrôle-Q / R / S / T étaient DC1 / DC2 / DC3 / DC4 ("Contrôle de périphérique 1", etc.). Même si je ne suis pas certain de l'historique, une telle dénomination suggérerait qu'à l'origine ils étaient destinés à déclencher des actions non spécifiées, mais la chose la plus courante chez DC1 et DC3 était de contrôler le lecteur de bande papier.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.