web-dev-qa-db-fra.com

Quel est l'intérêt de Ctrl-S?

Ctrl+S arrête toute sortie vers le terminal qui peut être redémarré avec Ctrl+Q.

Mais pourquoi Ctrl+S existe en premier lieu? Quel problème essayait d'être résolu en mettant en place cette séquence de contrôle?

146
Jeff King

Bien avant qu'il y ait des ordinateurs, il y avait téléimprimeurs (alias téléscripteurs, alias télétypes). Considérez-les comme à peu près la même technologie qu'un télégraphe, mais avec un certain type de clavier et une sorte d'imprimante.

Étant donné que les télétypes existaient déjà lors de la construction des ordinateurs et que les ordinateurs à l'époque étaient de la taille d'une pièce, les télétypes sont devenus une interface utilisateur pratique pour les premiers ordinateurs - tapez une commande, appuyez sur le bouton d'envoi, attendez un moment et la sortie de la commande est imprimée sur une feuille de papier devant vous.

Contrôle de flux logiciel est né à cette époque - si l'imprimante ne pouvait pas imprimer aussi vite que le téléscripteur recevait des données, par exemple, le téléscripteur pouvait envoyer une commande de contrôle de flux XOFF (Ctrl+S) vers le côté distant en disant "Arrêtez de transmettre pour l'instant", puis pourrait envoyer la commande de contrôle de flux XON (Ctrl+Q) au côté éloigné en disant "J'ai rattrapé, continuez s'il vous plaît".

Et cette utilisation survit sous Unix parce que les émulateurs de terminaux modernes émulent des terminaux physiques (comme les vt1 ) qui eux-mêmes (à certains égards) émulent des télétypes.

161
godlygeek

C'est un personnage de contrôle de l'époque des terminaux VT100 et similaires. Il y avait une capacité de défilement limitée (le cas échéant) sur ces terminaux pour commencer avec le CTRL-S vous a permis de geler la sortie pour voir ce qui est actuellement à l'écran sans qu'il soit radié.

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

27
Livinglifeback

BTW, si vous affichez une longue sortie sur votre écran, il est probable que vous ne lisiez pas nécessairement aussi vite que l'ordinateur qui crache la sortie. L'utilisation de CTRL-S/CTRL-Q sur un chat (ou une queue active) est TRÈS utile pour arrêter et reprendre la sortie.

25
mdpc

Sur les anciens télétypes avec un lecteur de bande papier, la réception d'un contrôle-Q allumait le lecteur de bande papier et commençait à envoyer des caractères de la bande comme s'ils avaient été tapés au clavier. Control-S éteindrait le lecteur de bande papier. Si l'on considère que les télétypes étaient à l'origine destinés à ne pas imprimer de 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 analogue à "demander à l'autre extrémité de cesser de transmettre".

Soit dit en passant, control-R allumait le perforateur de bande de papier, de sorte que chaque caractère reçu par le télétype (ou, si l'écho local était activé, tapé au clavier) serait également perforé sur la bande de papier; control-T désactiverait le perforateur de bande de papier. Contrairement aux opérations associées à control-S et control-Q, cependant, ces opérations semblent n'avoir aucun équivalent moderne.

De plus, les noms originaux de control-Q/R/S/T étaient DC1/DC2/DC3/DC4 ("Device Control 1", etc.) Bien que je ne sois pas certain de l'historique, une telle dénomination suggère qu'à l'origine ils étaient destinés à déclencher un type d'action non spécifié, mais la chose la plus courante que les gens faisaient avec DC1 et DC3 était de contrôler le lecteur de bande papier.

17
supercat