--- rpl/src/bibliotheques_externes.c 2011/09/20 08:56:23 1.35 +++ rpl/src/bibliotheques_externes.c 2011/09/20 09:51:42 1.36 @@ -169,10 +169,13 @@ chargement_bibliotheque(struct_processus (*onloading)(&rpl_arguments); - 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(NULL); + if (errno != EINTR) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return(NULL); + } } if ((*s_etat_processus).profilage == d_vrai) @@ -577,10 +580,13 @@ retrait_bibliotheque(struct_processus *s (*onclosing)(&rpl_arguments); - 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(d_erreur); + if (errno != EINTR) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return(d_erreur); + } } if ((*s_etat_processus).profilage == d_vrai) @@ -1141,10 +1147,13 @@ execution_fonction_de_bibliotheque(struc (*fonction)(&rpl_arguments); - 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(d_faux); + if (errno != EINTR) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return(d_faux); + } } if ((*s_etat_processus).profilage == d_vrai)