--- rpl/src/interruptions.c 2016/03/17 16:31:36 1.170 +++ rpl/src/interruptions.c 2016/03/21 12:08:05 1.172 @@ -2780,7 +2780,6 @@ envoi_signal_processus(pid_t pid, enum s // À ce moment, le segment de mémoire partagée est projeté // dans l'espace du processus. - if ((semaphore = sem_open2(pid, SEM_QUEUE)) == SEM_FAILED) { # ifndef IPCS_SYSV // POSIX @@ -3007,6 +3006,9 @@ envoi_signal_processus(pid_t pid, enum s close(segment); return(1); } + + close(segment); + # else // IPCS_SYSV # ifndef OS2 // SysV if (shmdt(queue) != 0) @@ -3142,7 +3144,7 @@ creation_queue_signaux(struct_processus return; } - if ((f_queue_signaux = shm_open(nom, O_RDWR | O_CREAT | O_EXCL, + if ((f_queue_signaux = shm_open(nom, O_RDWR | O_CREAT /* | O_EXCL*/, S_IRUSR | S_IWUSR)) == -1) { sys_free(nom); @@ -3379,6 +3381,12 @@ creation_queue_signaux(struct_processus } # endif + if (lancement_thread_signaux(s_etat_processus) == d_erreur) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } + return; }