--- rpl/src/semaphores.c 2016/03/22 09:22:23 1.76 +++ rpl/src/semaphores.c 2020/01/10 11:15:51 1.89 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.25 - Copyright (C) 1989-2016 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.32 + Copyright (C) 1989-2020 Dr. BERTRAND Joël This file is part of RPL/2. @@ -105,7 +105,13 @@ sem_init2(unsigned int valeur, pid_t pid uprintf("+++Warning: %s semaphore preexists!\n", chemin); } - semaphore = sem_open(chemin, O_RDWR | O_CREAT, + if (sem_unlink(chemin) != 0) + { + sys_free(chemin); + return(SEM_FAILED); + } + + semaphore = sem_open(chemin, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR, valeur); } } @@ -278,6 +284,7 @@ sem_getvalue2(sem_t *semaphore, int *val return(0); } + nanosleep(&attente, NULL); INCR_GRANULARITE(attente.tv_nsec); }