Ce sont deux choses différentes. Si tu veux implémenter
start et
stop pour le classer avec les autres services des différents
runlevels d'Unix, va d'abord faire un tour dans /etc/init.d : tu t'apercevras qu'il s'agit en fait de scripts Shell qui, eux, gèrent les différents mots-clés et appellent les exécutables en conséquence, en leur demandant de « démoniser », mais sans qu'il y ait d'interface standard pour cela.
Ensuite, pour que le processus devienne réellement «
dæmon », il faut en fait s'émanciper. Pour cela, tu commences par forker, de façon à ce que le processus en cours puisse se terminer et rendre la main au
Shell. Mais avant qu'il le fasse, le fils doit faire un certain nombre de préparatifs de routines pour gérer son état. Le premier consiste à appeler setsid() de façon à démarrer une nouvelle session distincte du père du il sera le
leader. Accessoirement, cela lui permet de se détacher de son terminal, puis la mort de son père rattachera automatiquement le processus à init (no 1).
Le reste consiste à fermer les fichiers standard, à intercepter les bons signaux et à ignorer les autres, etc.
http://www.enderunix.org/docs/eng/daemon.php
http://www.steve.org.uk/Reference/Unix/faq_2.html#SEC16
Partager