Diferencia entre las señales SIGINT, SIGKILL, SIGTERM

El otro día manejando señales me preguntaba las diferencias que existen entre señales que manejo de forma muy habitual para proceder con la terminación de procesos que se están ejecutando, ya sea dentro de código, con manejadores y la función kill() o directamente desde la terminal con la orden kill.

SIGINT

Se produce cuando el usuario presiona la combinación de teclas Control+C. (o en su defecto la equivalente) para matar un proceso. Puede ser controlada o ignorada por un manejador de señales.

SIGTERM

Señal que se envía el proceso para comunicarle un apagado “amable” (cerrando conexiones, ficheros y limpiando sus propios búfer). También puede ser controlada o ignorada por un manejador de señales del proceso. Es la señala que mandan por defecto: kill y killall desde la terminal.

SIGKILL

Esta señal provoca un apagado forzoso del proceso. A diferencia de las anteriores, no puede ser ignorada ni manejada por un controlador de señales. Es la manera más segura de matar un programa si no podemos hacerlo de las formas anteriores.

Author Description

F. Javier Carazo Gil

Casi Ingeniero Informático, co-fundador y administrador de Linux Hispano, además de desarrollar software y mantener sistemas en el CSIC, hace poco he fundado junto con Alberto Hornero una start-up: CODECTION donde trabajamos con software libre. Puedes saber más sobre mí, mi vida laboral, mis libros, mis artículos y mi día a día en @fjcarazo y en mi perfil público de LinkedIn.