--- rpl/src/instructions_p7.c 2011/09/20 08:56:23 1.36 +++ rpl/src/instructions_p7.c 2011/09/20 09:51:42 1.37 @@ -800,11 +800,15 @@ instruction_poke(struct_processus *s_eta .pipe_nombre_injections[1], "-", sizeof(unsigned char))) != sizeof(unsigned char)) { - if (sem_wait( + while(sem_wait( &((*s_etat_processus).semaphore_fork)) != 0) { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; + if (errno != EINTR) + { + (*s_etat_processus).erreur_systeme = + d_es_processus; + return; + } } if (longueur_ecriture == -1) @@ -866,10 +870,13 @@ instruction_poke(struct_processus *s_eta } } - if (sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) + while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; + if (errno != EINTR) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } } if (registre_stop == 0) @@ -1022,11 +1029,15 @@ instruction_poke(struct_processus *s_eta .pipe_nombre_injections[1], "-", sizeof(unsigned char))) != sizeof(unsigned char)) { - if (sem_wait( + while(sem_wait( &((*s_etat_processus).semaphore_fork)) != 0) { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; + if (errno != EINTR) + { + (*s_etat_processus).erreur_systeme = + d_es_processus; + return; + } } if (longueur_ecriture == -1) @@ -1088,11 +1099,14 @@ instruction_poke(struct_processus *s_eta } } - if (sem_wait( + while(sem_wait( &((*s_etat_processus).semaphore_fork)) != 0) { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; + if (errno != EINTR) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } } if (registre_stop == 0)