¿Cuál es el efecto de CTRL + Z en una aplicación unix \ Linux?


85

Tenía curiosidad y confusión sobre cuál es exactamente el comportamiento de CTRl + Z.

Lo sé, si un proceso se ejecuta en primer plano, y presionamos ctrl + z, pasa a segundo plano.

Pero qué pasa exactamente.

¿Sigue haciendo su trabajo, o se suspende y se detiene en el punto donde estaba?

Y si se detiene en ese punto, y cuál es el significado del trabajo en segundo plano.


77
Ctrl-Z no envía un proceso a un segundo plano, lo suspende.
Wooble

Respuestas:


70

Un "trabajo en segundo plano" es solo uno que no interactúa con el usuario: no controla el tty y solo hace lo suyo (generalmente en silencio). Un trabajo en primer plano es lo contrario, tiene el control de tty para interactuar con el usuario.

Control-Z suspende el proceso de primer plano más reciente (el último proceso para interactuar con el tty) (a menos que ese proceso tome medidas para ignorar la suspensión, como suelen hacer los shells). Esto generalmente lo llevará de regreso a su shell, desde el cual generalmente puede ingresar el comando bgpara mover el proceso recién suspendido a un segundo plano (permitiendo que continúe ejecutándose) o fgvolverlo a primer plano.


1
para deshacer un proceso en segundo plano con fgidentificar primero qué trabajo emitiendo y jobs luego decir si su% 1, luego el problema fb %1 y el proceso se reanudarán
Scott Stensland

fg %1nofb %1
ahonnecke

55

Al presionar Ctrl + Z se envía la TSTPseñal a su proceso. Esto detiene la ejecución (el núcleo no programará más tiempo de CPU para el proceso) y el proceso está esperando un CONT para continuar el procesamiento.

Puede emular / replicar esto a través de kill -TSTPy kill -CONT(ya killque enviará una señal nominada a su proceso, ¡a pesar del nombre!)

El shell tiene la funcionalidad de "fondo" del proceso, pero esta es una relación entre el shell y el proceso. El proceso en sí no tiene realmente el concepto de 'fondo' o 'primer plano'.

Ver aquí para más información.


2
^Zenvía SIGTSTP, no SIGSTOP
William Pursell

@WilliamPursell - ¡ah! Célebre. Ahora ha cambiado. Thx
Brian Agnew

15

Considere este comando, que toma aprox. 4.5 segundos en mi computadora portátil:

echo 2^10000000 | bc -lq | wc -c

Cuando presione Ctrl+ Z, el cálculo se suspenderá. Tiene la opción de reanudar el cálculo en primer plano utilizando fg, o reanudarlo en segundo plano utilizando bg. Este último es más o menos equivalente a ejecutar:

echo 2^10000000 | bc -lq | wc -c &

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.