Créer un démon

Problème

Vous voulez détacher votre programme de son père et effectuer toutes les démarches pour que votre programme devienne un processus résident.

Rappelons qu’un démon désigne un processus s’exécutant en tâche de fond dans l’attente d’un signal précis ou d’une condition qui se vérifie.

Solution

Sur Unix, plusieurs étapes sont nécessaires pour rendre un processus résident. Nous commençons par rendre le processus indépendant par rapport à son père. Un appel à fork() permet cela. Puis nous créons une nouvelle session avec setsid(). Un nouvel appel à fork() permet de se séparer du terminal de contrôle obtenu lors de la création de la session. Ensuite, il faut s’assurer que tous les descripteurs de fichiers hérités des processus parents sont fermés et que l’entrée dite standard et les sorties dites normale (ou standard) et d’erreur sont bien fermées. Enfin, nous nous assurons que le répertoire courant ne pose pas de problèmes.

Discussion

Pour rendre résident un processus, le plus simple est de faire appel à la fonction daemonize() suivante :


void 
daemonize (void) 
{ 
  int pid; 
  int i; 
  int fd; 
  char str[12]; 
 
/* Premier fork pour se rendre indépendant du processus père. */ 
  pid = fork (); 
  if (pid <...
Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Connaître le PID du processus et celui de son père
Suivant
Connaître l'utilisateur qui a lancé le programme