--- rpl/src/instructions_s1.c 2019/02/06 14:23:26 1.97 +++ rpl/src/instructions_s1.c 2019/02/07 15:47:41 1.98 @@ -4025,10 +4025,21 @@ instruction_syseval(struct_processus *s_ } } +# ifndef SEMAPHORES_NOMMES + if (sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# else + if (sem_wait((*s_etat_processus).semaphore_fork) != 0) +# endif + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } + do { if (kill(pid, 0) != 0) { + // Le processus n'existe plus. break; } @@ -4050,18 +4061,6 @@ instruction_syseval(struct_processus *s_ { if (errno != EINTR) { -# ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus).semaphore_fork)) - != 0) -# else - if (sem_post((*s_etat_processus).semaphore_fork) - != 0) -# endif - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es_processus; return; } @@ -4081,19 +4080,6 @@ instruction_syseval(struct_processus *s_ } } while((!WIFEXITED(status)) && (!WIFSIGNALED(status))); -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) -# else - while(sem_wait((*s_etat_processus).semaphore_fork) != 0) -# endif - { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - } - if (ios == -1) { (*s_etat_processus).erreur_systeme = d_es_processus;