Qual è il punto di Ctrl-S?


135

Ctrl+ Sarresta tutta l'output al terminale che può essere riavviato con Ctrl+ Q.

Ma perché Ctrl+ Sesiste in primo luogo? Quale problema stava cercando di risolvere mettendo in atto quella sequenza di controllo?


5
Vedi: linusakesson.net/programming/tty (leggi tutto, ma soprattutto la sezione sul Flow Control ...)
Olivier Dulac,

8
Ho usato Ctrl-S / Ctrl-Q per salvare il mio bacon molte volte per fermare l'output in fuga di messaggi di errore su un sistema a malapena funzionale in modo da poter vedere quali fossero.
DocSalvager,

4
Come nota a margine, ho questo nel mio .bashrcdisattivare entrambe le funzioni: stty stop ''; stty start '';. Questo lascia Ctrl-S libera per l'utilizzo come il carattere di escape per screen, con questo in mia .screenrc: escape ^Ss. Il che a sua volta significa che posso usare la readlinescorciatoia standard Ctrl-A per "inizio linea" (abbinata a Ctrl-E per "fine linea", e meno fragile all'emulazione terminale di Home e End). : D
IMSoP,

Risposte:


155

Molto prima che esistessero i computer, c'erano le teleprinter (aka teletypewriter, aka teletypes). Pensa a loro come all'incirca la stessa tecnologia di un telegrafo, ma con qualche tipo di tastiera e qualche tipo di stampante collegati.

Poiché i teletipi esistevano già quando i computer venivano costruiti per la prima volta e poiché i computer in quel momento avevano dimensioni di una stanza, i teletipi diventavano una comoda interfaccia utente per i primi computer: digitare un comando, premere il pulsante di invio, attendere qualche istante e il l'output del comando viene stampato su un foglio di carta di fronte a te.

Il controllo del flusso del software ha avuto origine in questo periodo: se la stampante non era in grado di stampare velocemente come il teletipo stava ricevendo dati, ad esempio, il teletipo poteva inviare un comando di controllo del flusso XOFF ( Ctrl+ S) al lato remoto dicendo "Interrompi trasmissione per ora" e quindi potrebbe inviare il comando di controllo del flusso XON ( Ctrl+ Q) al lato remoto dicendo "Ho raggiunto, per favore continua".

E questo utilizzo sopravvive in Unix perché i moderni emulatori di terminali emulano terminali fisici (come il vt100 ) che essi stessi (in qualche modo) emulavano i teletipi.


29
Molto probabilmente non "stampato su un foglio di carta" ma "stampato su una risma di carta a moduli".
Dubu,

3
O a un rotolo di nastro perforato!
mdpc,

2
Non credo che control-S e control-Q siano stati inizialmente utilizzati per avviare e arrestare l'output dai computer, ma piuttosto dai lettori di nastri di carta collegati ad altri teletipi . Non credo che ci sarebbe stato molto interesse nel collegare i teletipi ai computer fino all'avvento dei sistemi di condivisione del tempo. Altrimenti ogni volta che un computer trascorre in attesa che un utente digiti qualcosa è tempo che non sta spendendo per fare qualcosa di utile.
supercat,

2
O ad un rotolo di carta da 8½ʹʹ.
Scott,

44
Nel 1987 ho fatto esplodere l'ultimo teletipo sopravvissuto nella mia università. Lo usava come una stampante seriale e non mi rendevo conto che si sarebbe surriscaldato se fosse stato costretto a stampare 35 pagine di continuo. Il surriscaldamento aveva appena un cattivo odore, ma poi la carta prese fuoco a causa del caldo. Solo allora mi dissero che avrei dovuto dare un Ctrl-S ogni 2 pagine circa per lasciarlo raffreddare per un paio di minuti.
Tonny,

25

È un personaggio di controllo dai tempi dei terminali VT100 e simili. C'era una capacità di scorrimento limitata (se presente) su quei terminali per cominciare con il CTRL-S che ti permetteva di congelare l'output per visualizzare ciò che è attualmente sullo schermo senza che fosse cancellato.

Quasi tutto ciò che si vede nei moderni terminali è stato messo in atto per emulare quei vecchi sistemi di terminali.


Questo è quello che ho sentito (piuttosto che la risposta al teleprinter, sebbene sia possibile (probabilmente anche) che questa sia la ragione per cui tale funzionalità è stata preservata.) Ho usato Cntr-S per questo scopo, quando ho problemi con più o meno
Lyndon White,

2
La necessità meccanica di avviare / arrestare l'output è arrivata prima che l'essere umano avesse bisogno di poterlo leggere!
TripeHound,

@TripeHound: In effetti, è passato molto tempo prima che ci fosse una particolare aspettativa che gli umani stessero guardando le informazioni mentre venivano ricevute (qualcuno che stava aspettando con impazienza una storia potrebbe guardare come è stato ricevuto da un teletipo, ma gli operatori di solito avevano cose migliori fare).
supercat,

21

A proposito, se stai elencando un output lungo sullo schermo, è probabile che tu non legga necessariamente velocemente come il computer che emette l'output. L'uso di CTRL-S / CTRL-Q su un gatto (o coda attiva) è MOLTO utile per arrestare e riprendere l'output.


25
lessè più.
dotancohen,

2
@dotancohen: molto divertente. Persino morenon fu introdotto fino a quattro o cinque anni dopo il rilascio del primo Unix (caratterizzato cat, ma noncat -v ). Nota anche che c'erano altri sistemi operativi (interattivi) in multiproprietà prima di Unix; ad es . RSTS .
Scott,

2
@dotancohen Preferisco less, ma la gente dice che, mentre lo lessè more, mostè ancora più di less!
Volker Siegel,

1
@VolkerSiegel: Grazie per avermi fatto conoscere most! Se non sapessi di un programma che ti permette di vedere un file di immagine (gif, jpg, png) su ssh sul cli, mi piacerebbe saperlo. Attualmente uso asciiviewo img2txtma nessuno dei due è soddisfacente.
dotancohen,

2
@VolkerSiegel: grazie anche per la maggior parte ! Come dice l'autore: "Perché accontentarsi di meno?". Gli utenti Debian possono farlo apt-get install most.
marzo

17

Su antichi teletipi con un lettore di nastri di carta, la ricezione di un controllo-Q accendeva il lettore di nastri di carta e iniziava a inviare caratteri dal nastro come se fossero stati digitati sulla tastiera. Control-S spegne il lettore di nastri di carta. Se si considera che i teletipi erano originariamente destinati a non stampare dati dai computer, ma piuttosto da altri teletipi, dovrebbe essere abbastanza chiaro come "spegnere il lettore di nastri di carta" possa essere interpretato come analogo a "richiedere l'altra estremità per interrompere la trasmissione".

Per inciso, control-R attiverebbe il punzone del nastro di carta, in modo tale che ogni carattere ricevuto dal teletipo (o, se l'eco locale fosse abilitato, digitato sulla tastiera) venisse anche perforato sul nastro di carta; control-T spegne il punzone del nastro di carta. A differenza delle operazioni associate a control-S e control-Q, tuttavia, tali operazioni sembrano non avere un equivalente moderno.

Inoltre, i nomi originali per control-Q / R / S / T erano DC1 / DC2 / DC3 / DC4 ("Device Control 1", ecc.) Anche se non sono sicuro della storia, tale denominazione suggerirebbe che originariamente avevano lo scopo di innescare un tipo di azione non specificato, ma la cosa più comune che le persone facevano con DC1 e DC3 era controllare il lettore di nastri di carta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.