--- rpl/src/interruptions.c 2016/07/21 15:22:53 1.181 +++ rpl/src/interruptions.c 2016/07/22 14:44:11 1.182 @@ -3425,6 +3425,8 @@ creation_queue_signaux(struct_processus return; } + (*s_queue_signaux).controle = getpid(); + if (pthread_create(&((*s_queue_signaux).thread_signaux), &attributs, thread_surveillance_signaux, s_etat_processus) != 0) { @@ -3438,8 +3440,6 @@ creation_queue_signaux(struct_processus return; } - (*s_queue_signaux).controle = getpid(); - # ifndef IPCS_SYSV if (msync(s_queue_signaux, sizeof(s_queue_signaux), MS_ASYNC | MS_INVALIDATE) != 0) @@ -3542,7 +3542,17 @@ destruction_queue_signaux(struct_process // Incrémenter le sémaphore pour être sûr de le débloquer. sem_post(semaphore_signalisation); - pthread_join((*s_queue_signaux).thread_signaux, NULL); + + if ((*s_queue_signaux).controle == getpid()) + { + pthread_join((*s_queue_signaux).thread_signaux, NULL); + } + else + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } + arret_thread_signaux(s_etat_processus); # ifdef IPCS_SYSV // SystemV