--- rpl/src/interruptions.c 2016/04/01 13:33:27 1.178 +++ rpl/src/interruptions.c 2016/04/06 21:14:56 1.179 @@ -2494,11 +2494,6 @@ scrutation_interruptions(struct_processu return; } } - - if ((*s_queue_signaux).requete_arret == d_vrai) - { - break; - } } sem_post(semaphore_queue_signaux); @@ -2737,11 +2732,26 @@ envoi_signal_processus(pid_t pid, enum s queue = shmat(segment, NULL, 0); # else // OS/2 - if (DosGetNamedSharedMem((PVOID) &queue, nom, - PAG_WRITE | PAG_READ) != 0) + if (test_ouverture == d_vrai) { - sys_free(nom); - return(1); + attente.tv_sec = 0; + attente.tv_nsec = GRANULARITE_us * 1000; + + while(DosGetNamedSharedMem((PVOID) &queue, nom, + PAG_WRITE | PAG_READ) != 0) + { + nanosleep(&attente, NULL); + INCR_GRANULARITE(attente.tv_nsec); + } + } + else + { + if (DosGetNamedSharedMem((PVOID) &queue, nom, + PAG_WRITE | PAG_READ) != 0) + { + sys_free(nom); + return(1); + } } sys_free(nom);