¿Alguien puede decirme la diferencia entre ctrl+ zy ctrl+ c?
Cuando estoy en la terminal, ambas combinaciones detienen el proceso actual, pero ¿cuál es exactamente la diferencia entre ambas?
command-line
chaitanya lakkundi
fuente
fuente
Respuestas:
Si dejamos los casos extremos a un lado, la diferencia es simple. Control+ Caborta la aplicación casi inmediatamente mientras Control+ la Zdesvía hacia el fondo, suspendida.
El shell envía diferentes señales a las aplicaciones subyacentes en estas combinaciones:
Control+ C(carácter de control
intr
) envía SIGINT que interrumpirá la aplicación. Por lo general, lo hace abortar, pero esto depende de la aplicación para decidir.Control+ Z(carácter de control
susp
) envía SIGTSTP a una aplicación en primer plano, colocándola efectivamente en segundo plano, suspendida. Esto es útil si necesita salir de algo como un editor para obtener algunos datos que necesita. Puede volver a la aplicación ejecutandofg
(o%x
dóndex
está el número de trabajo como se muestra enjobs
).Podemos probar esto corriendo
nano TEST
, luego presionando Control+ Zy luego corriendops aux | grep TEST
. Esto nos mostrará que elnano
proceso aún se está ejecutando:Además, podemos ver (a partir de esa T, que está en la columna de estado) que el proceso se ha detenido . Entonces todavía está vivo, pero no se está ejecutando ... Se puede reanudar.
Algunas aplicaciones se bloquean si tienen procesos externos en curso (como una solicitud web) que pueden exceder el tiempo de espera mientras están dormidos.
fuente
bg
(en lugar defg
) para suspender una aplicación que ha sido Ctrl + Z'ed sin volver a ponerla en primer plano; dándole efectivamente el control tanto del shell que inició la aplicación como de la aplicación en sí, como si lo hubiera utilizado&
al iniciar la aplicación. Esto suele ser útil cuando olvidaste comenzar con&
:)fg
nuevo!ctrl c
octrl z
? Por defecto es el SID (bash)?Control+ Zsuspende un proceso (
SIGTSTP
) e Control+ Cinterrumpe un proceso (SIGINT
)http://en.wikipedia.org/wiki/Control-Z
http://en.wikipedia.org/wiki/Control-C
fuente
Ctrl+ Cse usa para matar un proceso con señal
SIGINT
, en otras palabras, es una muerte educada .Ctrl+ Z se usa para suspender un proceso enviándole la señal
SIGTSTP
, que es como una señal de suspensión, que se puede deshacer y el proceso se puede reanudar nuevamente.Sin embargo, cuando se suspende un proceso, podemos reanudarlo nuevamente
fg
(reanudar en primer plano) ybg
(reanudar en segundo plano), pero no puedo reanudar un proceso finalizado, esa es una diferencia entre usar Ctrl+ Cy Ctrl+ Z.¿Cómo podemos ver los procesos suspendidos?
El
jobs
comando da una salida como esta:¿Cómo matar un proceso suspendido en segundo plano?
Al usar el
kill
comando:kill %n
donden
es el número que muestra eljobs
comando Así que si quiero matar gato:kill %1
.fuente
Para hacerlo mas simple:
CTRL-C solicita que el programa se cancele .
CTRL-Z obliga al programa a suspender y pasar a un segundo plano .
Esto le permite reanudarlo más tarde con el comando
fg
. Las tareas en segundo plano restantes se eliminan cuando sale del shell de inicio de sesión.fuente
Esto debería ayudar
fuente
SIGTSTP
, que puede ser atrapado por el programa. Hay cuatro señales diferentes, que pueden suspender un programaSIGSTOP
,SIGTSTP
,SIGTTIN
,SIGTTOU
. De esos soloSIGSTOP
no se pueden bloquear. El terminal usa los otros tres para detener el proceso en diferentes condiciones.cuando presiona ctrl+ c, significa que envía SIGINT a su proceso. como se escribe este comando:
kill -SIGINT <your_pid>
. Te matará tu proceso. Es por eso que no puede verlo cuando emite el comando ps .Cuando presiona ctrl+ z, significa que envía SIGSTOP a su proceso. como se escribe este comando:
kill -SIGKSTOP <your_pid>
. Se detendrá su proceso, pero el proceso sigue vivo. Para que pueda reactivar su proceso enviando SIGCONT a su proceso.fuente