Hay programas de Linux, por ejemplo vlc, que recomiendan escribir ctrl+ cdos veces para matar su ejecución desde un terminal si el programa no se detuvo después del primero.
¿Por qué escribir ctrl+ cdos veces funciona cuando la primera vez no funciona?
Respuestas:
Lo que hace es completamente específico de la aplicación. Cuando presiona ctrl+ c, el emulador de terminal envía una señal SIGINT a la aplicación en primer plano, que activa el "controlador de señal" apropiado. El controlador de señal predeterminado para SIGINT finaliza la aplicación. Pero cualquier programa puede instalar su propio controlador de señal para SIGINT (incluido un controlador de señal que no detiene la ejecución).
Aparentemente, vlc instala un controlador de señal que intenta realizar una limpieza / terminación elegante la primera vez que se invoca, y vuelve al comportamiento predeterminado de terminar la ejecución instantáneamente cuando se invoca por segunda vez.
fuente
SIGINT , la señal enviada por Ctrl+ C, convencionalmente le dice a un programa que salga a su ciclo principal de procesamiento de comandos, o si eso no tiene sentido, que salga limpiamente. Algunos programas ejecutan un procedimiento de limpieza cuando reciben un SIGINT. Si el programa está tan desordenado que el procedimiento de limpieza falla, en algunos programas, un segundo Ctrl+ Chace que el programa se cierre inmediatamente. Hacer esto depende de cada autor del programa.
Si un segundo Ctrl+ Cno mata al programa, intente Ctrl+ \, que envía SIGQUIT , un (señal pero todavía capturable) más violenta, o tratar de Ctrl+ Za suspender el programa y luego el
kill
comando (por ejemplokill %1
, que envía SIGTERM , una señal convencionalmente menos violento que SIGQUIT, al trabajo número 1). Si todo lo demás falla, elimine el programa conkill -KILL
, también conocido comokill -9
, enviando la señal inalcanzable SIGKILL .fuente