
Mientras estaba ejecutando, apt upgrade
accidentalmente envié un Ctrl- Sa esa ventana de terminal.
Ahora conozco XOFF
, XON
, Ctrl- Qy algo nuevo sobre el teletipo.
Cuando envié un Ctrl- Qal terminal "en pausa", apt
continuó con su trabajo.
Al leer sobre XOFF
, no me queda claro qué sucedió en apt
, o qué sucede en general en cualquier comando que recibe un XOFF
. htop
deja de actualizar la pantalla, lo cual es bueno saber, pero ¿ htop
sigue funcionando?
¿Seguiba apt
corriendo? ¿O fue apt
efectivamente htop
pausado, congelado?
Aparentemente, los procesos aún pueden recibir entradas, mientras están XOFF
en 'd', por lo que todavía se están ejecutando.
¿Lo que está sucediendo? Por ejemplo, el contador del programa, aparentemente no deja simplemente de incrementar el contador del programa, congelando el programa.
¿Depende de cómo esté programado el comando para manejar XOFF? ¿Existe algún comportamiento general que se pueda esperar con los comandos básicos de Linux?
Notaesoestey preguntas similares no contienen respuestas a mi pregunta ya que no mencionan lo que sucede en el programa en sí. Por ejemplo, no sé si apt
continuó ejecutándose en silencio o si estuvo congelado/pausado.
Respuesta1
Como ya sabrás, XON
y XOFF
, vinculados a Ctrl+ Sy Ctrl+ Qde forma predeterminada, estáncontrol de flujo de softwarepersonajes y en principio reliquias de laViejos tiempos de terminales de teletipo que imprimían papel.. Se utilizaban en ocasiones en las que un equipo receptor (a menudo una impresora de papel) no podía seguir el ritmo de la entrada enviada por un remitente remoto.
Hoy en día ya no se utilizan teletipos en papel, pero la idea detrás de ellos todavía se conserva en el marco del software de un "terminal" (ver, por ejemplo,aquíyeste muy buen artículo sobre la historia del TTY), que heredó y aún implementa algunos de los conceptos utilizados en los terminales originales en papel, uno de los cuales es la capacidad de interpretar caracteres de control de flujo.
Por lo general, un programa que se ejecuta "en la consola", es decir, conectado a un pseudoterminal, no puede ver los caracteres XON
y, XOFF
ya que el terminal los detecta de forma predeterminada, donde el comportamiento estándar es XOFF
dejar de imprimir la salida. recibe del programa. Por lo demás, el programa en sí no se ve afectado y continúa ejecutándose en segundo plano, solo que la salida no se "envía" al usuario hasta que XON
se recibe nuevamente.
Si escribe un programa y desea recibir explícitamente estos caracteres de entrada, puede usar la tcsetattr()
llamada al sistema en su programa para deshabilitar el control de flujo del software a través de la IXOFF
bandera (consulteaquí, por ejemplo) -nano
hace eso, Por ejemplo.
Respuesta2
htop
deja de actualizar la pantalla, lo cual es bueno saber, perohtop
todavía se está ejecutando [después de ingresar Ctrl-S]?
Si, absolutamente. htop
u otro comando NO se detiene ni congela con Ctrl-S.
La IXON
configuración de termios no funciona como ISIG
. Escribir los caracteres VSTOP
(Ctrl-S) o VSTART
(Ctrl-Q) NO envía ninguna señal al proceso que se ejecuta en la terminal.
Es muy fácil comprobarlo; abrir dos terminales: en la primera entrar
tail -f /tmp/file
y en el segundo
cat > /tmp/file
Ahora, en la segunda terminal, escriba Ctrl-S, luego siga escribiendo líneas a ciegas seguidas de Enter. Aparecerán en pantalla en el primer terminal. Si en lugar de cat
eso es un shell y esos son comandos como rm ...
, se ejecutarán sin tener que repetirse en la pantalla.
lo que sucede generalmente en cualquier comando que recibe un XOFF.
El comando no "recibe un XOFF". Todo se maneja dentro del controlador de la terminal. Desde el punto de vista de la aplicación no pasa nada. Si el programa sigue enviando abundantes resultados (o la ECHO
configuración de termios está activada, la opción predeterminada, y sigue recibiendo abundantes datos), cualquier escritura (o lectura respectiva) en el terminal se bloqueará en algún momento hasta que se reciba Ctrl-Q.