¿Cuál es el punto de Ctrl-S?


135

Ctrl+ Sdetiene toda la salida al terminal que se puede reiniciar con Ctrl+ Q.

Pero, ¿por qué existe Ctrl+ Sen primer lugar? ¿Qué problema estaba tratando de resolver poniendo esa secuencia de control en su lugar?


55
Ver: linusakesson.net/programming/tty ( léalo todo, pero especialmente la sección sobre Control de flujo ...)
Olivier Dulac

8
He usado Ctrl-S / Ctrl-Q para guardar mi tocino muchas veces para detener la salida desbocada de mensajes de error en un sistema apenas funcional para que pudiera ver cuáles eran.
DocSalvager

44
Como nota al margen, tengo esto en mi .bashrcdesactivar ambas funciones: stty stop ''; stty start '';. Esto deja Ctrl-S libre para su uso como el carácter de escape para screen, con esto en mi .screenrc: escape ^Ss. Lo que a su vez significa que puedo usar el readlineatajo estándar Ctrl-A para "principio de línea" (combinado con Ctrl-E para "fin de línea", y menos frágil para la emulación de terminal que Inicio y Fin). : D
IMSoP

Respuestas:


155

Mucho antes de que existieran las computadoras, había teleimpresores (también conocidos como teletipos, también conocidos como teletipos). Piense en ellos como más o menos la misma tecnología que un telégrafo, pero con algún tipo de teclado y algún tipo de impresora conectados.

Debido a que los teletipos ya existían cuando las computadoras se construyeron por primera vez, y debido a que las computadoras en ese momento eran del tamaño de una habitación, los teletipos se convirtieron en una interfaz de usuario conveniente para las primeras computadoras: escriba un comando, presione el botón de envío, espere un momento y el la salida del comando se imprime en una hoja de papel frente a usted.

El control de flujo del software se originó alrededor de esta era: si la impresora no podía imprimir tan rápido como el teletipo estaba recibiendo datos, por ejemplo, el teletipo podría enviar un comando de control de flujo XOFF ( Ctrl+ S) al lado remoto diciendo "Detener la transmisión por ahora" , y luego podría enviar el comando de control de flujo XON ( Ctrl+ Q) al lado remoto diciendo "Me he puesto al día, continúe".

Y este uso sobrevive en Unix porque los emuladores de terminal modernos están emulando terminales físicos (como el vt100 ) que ellos mismos (de alguna manera) estaban emulando teletipos.


29
Lo más probable es que no se "imprima en una hoja de papel" sino que "se imprima en una pila de papel plegado en abanico".
Dubu

3
¡O a un ROLLO de cinta perforada!
mdpc

2
No creo que el control-S y el control-Q se usaran inicialmente para iniciar y detener la salida de las computadoras, sino más bien de los lectores de cinta de papel conectados a otros teletipos . No creo que hubiera habido mucho interés en conectar los teletipos a las computadoras hasta la llegada de los sistemas de tiempo compartido. De lo contrario, cada vez que una computadora pasa esperando a que un usuario escriba algo es tiempo que no pasa haciendo algo útil.
supercat

2
O a un rollo de papel de 8½ʹʹ.
Scott

44
En 1987, hice que el último teletipo que había sobrevivido en mi universidad se incendiara. Lo usé como una impresora en serie y no me di cuenta de que se sobrecalentaría si se lo obligara a imprimir 35 páginas continuamente. El sobrecalentamiento olía mal, pero luego el papel se incendió debido al calor. Solo entonces me dijeron que debería haberle dado un Ctrl-S cada 2 páginas más o menos para que se enfriara durante un par de minutos.
Tonny

25

Es un personaje de control de la época de los terminales VT100 y similares. Había una capacidad de desplazamiento limitada (si la hubiera) en esos terminales para comenzar con el CTRL-S que le permitía congelar la salida para ver lo que está actualmente en la pantalla sin que se cancele.

La mayoría de todo lo que ves en las terminales modernas se implementó para emular esos sistemas de terminales más antiguos.


Esto es lo que he escuchado (en lugar de la respuesta de la teleimpresora, aunque es posible (probablemente incluso) que esta sea la razón por la que se preservó dicha funcionalidad). He usado Cntr-S para este propósito, cuando tengo problemas con más o menos
Lyndon White

2
¡La necesidad mecánica de iniciar / detener la producción llegó antes que la necesidad humana de poder leerla!
TripeHound

@TripeHound: De hecho, sucedió mucho antes de que hubiera una expectativa particular de que los humanos estarían mirando la información mientras la recibían (alguien que esperaba ansiosamente una historia podría ver cómo la recibía un teletipo, pero los operadores generalmente tenían mejores cosas que hacer).
supercat

21

Por cierto, si está enumerando una salida larga en su pantalla, es probable que no necesariamente lea tan rápido como la computadora que escupe la salida. Usar CTRL-S / CTRL-Q en un gato (o cola activa) es MUY útil para detener y reanudar la salida.


25
lesses más.
dotancohen

2
@dotancohen: Muy gracioso. Even moreno se presentó hasta cuatro o cinco años después del lanzamiento del primer Unix (presentando cat, pero nocat -v ). Tenga en cuenta también que había otros sistemas operativos de tiempo compartido (interactivo) antes de Unix; por ejemplo, RSTS .
Scott

2
@dotancohen Prefiero less, pero la gente dice que, mientras lessestá more, ¡ mosttodavía es más que less!
Volker Siegel

1
@VolkerSiegel: ¡Gracias por presentarme most! En caso de que conozca un programa que le permite ver un archivo de imagen (gif, jpg, png) sobre ssh en el cli, me encantaría saberlo. Actualmente uso asciiviewo img2txtpero ninguno es satisfactorio.
dotancohen

2
@VolkerSiegel: ¡Gracias también por la mayoría ! Como dice el autor: "¿Por qué conformarse con menos?". Los usuarios de Debian pueden apt-get install most.
mivk

17

En los teletipos antiguos con un lector de cinta de papel, la recepción de un control-Q encendería el lector de cinta de papel y comenzaría a enviar caracteres de la cinta como si hubieran sido escritos en el teclado. Control-S apagaría el lector de cinta de papel. Si se considera que los teletipos originalmente estaban destinados a no imprimir datos desde computadoras, sino desde otros teletipos, debería quedar bastante claro cómo "apagar el lector de cinta de papel" podría interpretarse como análogo a "solicitar que otro extremo deje de transmitir".

Por cierto, el control-R activaría el punzón de la cinta de papel, de modo que cada carácter recibido por el teletipo (o, si se habilita el eco local, escrito en el teclado) también se perforaría en la cinta de papel; control-T apagaría el punzón de cinta de papel. Sin embargo, a diferencia de las operaciones asociadas con control-S y control-Q, esas operaciones parecen no tener un equivalente moderno.

Además, los nombres originales para control-Q / R / S / T eran DC1 / DC2 / DC3 / DC4 ("Control de dispositivo 1", etc.) Si bien no estoy seguro del historial, dicha denominación sugeriría que originalmente estaban destinados a desencadenar algún tipo de acción no especificada, pero lo más común que las personas hicieron con DC1 y DC3 fue controlar el lector de cinta de papel.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.