¿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?
¿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?
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 ejecutando fg
(o %x
dónde x
está el número de trabajo como se muestra en jobs
).
Podemos probar esto corriendo nano TEST
, luego presionando Control+ Zy luego corriendo ps aux | grep TEST
. Esto nos mostrará que el nano
proceso aún se está ejecutando:
oli 3278 0.0 0.0 14492 3160 pts/4 T 13:59 0:00 nano TEST
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.
bg
(en lugar de fg
) 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
o ctrl 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
En sistemas tipo Unix, Control + Z es la asignación de teclado predeterminada más común para la secuencia de teclas que suspende un proceso
http://en.wikipedia.org/wiki/Control-C
En los sistemas POSIX, la secuencia hace que el programa activo reciba una señal SIGINT. Si el programa no especifica cómo manejar esta condición, se termina. Por lo general, un programa que maneja un SIGINT todavía terminará, o al menos terminará la tarea que se ejecuta dentro de él
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) y bg
(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:
[1]- Stopped cat
[2]+ Stopped vi
¿Cómo matar un proceso suspendido en segundo plano?
Al usar el kill
comando:
kill %n
donde n
es el número que muestra el jobs
comando Así que si quiero matar gato: kill %1
.
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.
Esto debería ayudar
Ctrl+ Zse utiliza para suspender un proceso enviándole la señal SIGSTOP, que el programa no puede interceptar. Mientras Ctrl+ Cse usa para matar un proceso con la señal SIGINT, y puede ser interceptado por un programa para que pueda limpiarse antes de salir, o no salir del todo.
SIGTSTP
, que puede ser atrapado por el programa. Hay cuatro señales diferentes, que pueden suspender un programa SIGSTOP
, SIGTSTP
, SIGTTIN
, SIGTTOU
. De esos solo SIGSTOP
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.