Les signaux peuvent être envoyés en utilisant kill
utilitaire ou tuer syscall.Bien sûr, vous pouvez essayer de savoir qui envoie ce signal ou déconnecte vos terminaux ou connexions réseau, mais il existe un moyen pratique plus simple de résoudre votre problème.
Lorsque le code est censé s'exécuter en tant que démon, mais qu'il ne l'est pas vraiment (tout comme le vôtre), il existe un wrapper qui peut transformer n'importe quel programme en démon. Surprise - ce wrapper s'appelle daemon
! Il a beaucoup d'options, probablement la plus importante pour vous, l'option de redémarrer automatiquement votre utilitaire s'il venait à mourir pour une raison quelconque.
Si cette commande n'est pas installée sur votre Ubuntu, juste sudo apt-get install daemon
, et man daemon
pour commencer.
Eh bien, il y a quelques choses à noter à propos de SIGHUP. Premièrement, son origine vient du concept de raccrochage, c'est-à-dire de perte de connexion à une console via quelque chose comme un modem. Dans le langage moderne, cela signifie généralement qu'il a perdu son tty de contrôle. A moins que vous n'ayez pris soin de vous détacher de votre tty, tout programme lancé dans un terminal donné recevra un SIGHUP à la fermeture du terminal. Voir ici pour plus de détails sur la façon de le faire dans votre programme. Les autres options incluent :
- exécuter votre programme dans
screen
outmux
- exécuter votre programme avec
nohup
ou un autre framework de démonisation
L'autre possibilité est que quelque chose envoie délibérément à votre processus un SIGHUP qui, par "tradition", est souvent utilisé pour signaler à un processus qu'il doit relire sa configuration.