Diff for /rpl/src/daemon.c between versions 1.41 and 1.73

version 1.41, 2012/03/01 10:14:03 version 1.73, 2018/12/24 15:55:00
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.7    RPL/2 (R) version 4.1.30
   Copyright (C) 1989-2012 Dr. BERTRAND Joël    Copyright (C) 1989-2018 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 75  lancement_daemon(struct_processus *s_eta Line 75  lancement_daemon(struct_processus *s_eta
         // sémaphores anonymes POSIX ou la sémantique SysV, il faut          // sémaphores anonymes POSIX ou la sémantique SysV, il faut
         // détruire les sémaphores et les recréer dans le processus fils.          // détruire les sémaphores et les recréer dans le processus fils.
   
 #       ifndef SEMAPHORE_NOMMES  #       ifndef SEMAPHORES_NOMMES
         sem_post(&((*s_etat_processus).semaphore_fork));          sem_post(&((*s_etat_processus).semaphore_fork));
         sem_destroy(&((*s_etat_processus).semaphore_fork));          sem_destroy(&((*s_etat_processus).semaphore_fork));
   
         sem_post(&semaphore_gestionnaires_signaux);  
         sem_destroy(&semaphore_gestionnaires_signaux);  
 #       else  #       else
         sem_post((*s_etat_processus).semaphore_fork);          sem_post((*s_etat_processus).semaphore_fork);
         sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),          sem_destroy3((*s_etat_processus).semaphore_fork, getpid(),
                 pthread_self(), SEM_FORK);                  pthread_self(), SEM_FORK);
   
         sem_post(semaphore_gestionnaires_signaux);  
         sem_destroy2(semaphore_gestionnaires_signaux, getpid(), SEM_SIGNAUX);  
 #       endif  #       endif
   
         destruction_queue_signaux(s_etat_processus);          destruction_queue_signaux(s_etat_processus);
Line 108  lancement_daemon(struct_processus *s_eta Line 102  lancement_daemon(struct_processus *s_eta
         return;          return;
     }      }
   
   #   pragma GCC diagnostic push
   #   pragma GCC diagnostic ignored "-Wunused-result"
     freopen("/dev/null", "r", stdin);      freopen("/dev/null", "r", stdin);
     freopen("/dev/null", "w", stdout);      freopen("/dev/null", "w", stdout);
     freopen("/dev/null", "w", stderr);      freopen("/dev/null", "w", stderr);
   #   pragma GCC diagnostic pop
   
     /*      /*
      * Second fork pour ne plus être un session leader.       * Second fork pour ne plus être un session leader.
Line 132  lancement_daemon(struct_processus *s_eta Line 129  lancement_daemon(struct_processus *s_eta
     }      }
   
     (*s_etat_processus).pid_processus_pere = getpid();      (*s_etat_processus).pid_processus_pere = getpid();
       liberation_queue_signaux(s_etat_processus);
     creation_queue_signaux(s_etat_processus);      creation_queue_signaux(s_etat_processus);
     modification_pid_thread_pere(s_etat_processus);      modification_pid_thread_pere(s_etat_processus);
   
 #   ifndef SEMAPHORES_NOMMES  
     sem_init(&semaphore_gestionnaires_signaux, 0, 0);  
     sem_init(&((*s_etat_processus).semaphore_fork), 0, 0);  
 #   else  
     if ((semaphore_gestionnaires_signaux = sem_init2(0, getpid(), SEM_SIGNAUX))  
             == SEM_FAILED)  
     {  
         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;  
         return;  
     }  
   
     if ((sem_init(&((*s_etat_processus).semaphore_fork), 0, 0))  
             == SEM_FAILED)  
     {  
         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;  
         return;  
     }  
 #   endif  
   
     return;      return;
 }  }
   

Removed from v.1.41  
changed lines
  Added in v.1.73


CVSweb interface <joel.bertrand@systella.fr>