Las señales se pueden enviar usando kill
utilidad o matar syscall. Por supuesto, puede intentar averiguar quién está enviando esa señal o desconectando sus terminales o conexiones de red, pero hay una forma práctica más sencilla de solucionar su problema.
Cuando se supone que el código debe ejecutarse como un demonio, pero en realidad no lo es (como el suyo), existe un envoltorio que puede convertir cualquier programa en un demonio. Sorpresa:este envoltorio se llama daemon
! Tiene muchas opciones, probablemente la más importante para usted, la opción de reiniciar automáticamente su utilidad en caso de que falle por algún motivo.
Si este comando no está instalado en su Ubuntu, simplemente sudo apt-get install daemon
y man daemon
para empezar.
Bueno, hay un par de cosas a tener en cuenta sobre SIGHUP. En primer lugar, su origen proviene del concepto de colgado, es decir, pérdida de conexión a una consola a través de algo como un módem. En el lenguaje moderno, esto generalmente significa que ha perdido su tty de control. A menos que haya tenido cuidado de desconectarse de su tty, cualquier programa iniciado en una terminal determinada recibirá un SIGHUP cuando se cierre la terminal. Consulte aquí para obtener detalles sobre cómo hacer esto en su programa. Otras opciones incluyen:
- ejecutando su programa dentro de
screen
otmux
- ejecuta tu programa con
nohup
o algún otro marco demonizante
La otra posibilidad es que algo esté enviando deliberadamente a su proceso un SIGHUP que, por "tradición", a menudo se usa para señalar a un proceso que debe volver a leer su configuración.