--- rpl/src/instructions_r4.c 2011/09/20 08:56:23 1.42 +++ rpl/src/instructions_r4.c 2011/09/20 09:51:42 1.43 @@ -2136,10 +2136,13 @@ instruction_read(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 ((*s_etat_processus).var_volatile_requete_arret == -1) @@ -2594,12 +2597,15 @@ instruction_read(struct_processus *s_eta free(tampon_lecture); liberation(s_etat_processus, s_objet_argument_1); - if (sem_wait(&((*s_etat_processus) + 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; + } } (*s_etat_processus).erreur_execution = @@ -2621,10 +2627,13 @@ instruction_read(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 ((*s_etat_processus).var_volatile_requete_arret == -1)