¿Hay alguna manera de averiguar qué hará el programa cuando reciba la señal de interrupción HUP?
Sin simplemente ejecutar el comando ofc: D
Por ejemplo,
killall -HUP pppd
reiniciará pppd
killall -HUP firefox
simplemente matará a Firefox
Lee su documentación. Esa es la única manera. Como Keith ya escribió , el significado original de SIGHUP era que el usuario había perdido el acceso al programa, por lo que los programas interactivos deberían morir. Los demonios , programas que no interactúan directamente con el usuario, no necesitan este comportamiento y, en cambio, a menudo vuelven a cargar sus archivos de configuración cuando reciben SIGHUP. Pero estas son solo convenciones.
Si tiene la fuente, también puede leer eso. O si solo tiene el binario, puede intentar desarmarlo, buscar sigaction
llamadas que configuren un controlador de señal SIGHUP
e intentar averiguar qué están haciendo esos controladores de señal. Será más fácil organizar no enviar SIGHUP a ese programa en primer lugar.
En cualquier momento, un proceso dado se encuentra en uno de los tres estados con respecto a una señal particular: ignorarlo, realizar la acción predeterminada o ejecutar un controlador personalizado. Muchas unidades le permiten ver la máscara de señal de un proceso con ps
, por ejemplo, con ps s
Linux. Eso puede decirle si el proceso está ignorando la señal o morirá instantáneamente en SIGHUP, pero si el proceso ha establecido un controlador, no puede saber qué hace el controlador.
La acción predeterminada es finalizar el proceso en SIGHUP. Ver
man 7 signal
para más detalles. Pero los programas pueden atraparlo y hacer lo que quieran. Como se supone que los procesos de daemon nunca deben salir, comúnmente usan SIGHUP para otros fines, como reinicializarse a sí mismos (como lo hace pppd). Firefox mantiene la acción predeterminada.fuente