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.