Bonjour a tous,
J'utilise des semaphore, et j'aimerais bien faire un 'down' sur un semaphore, mais ne pas attendre si il est deja à 0, j'utilise donc le flag " IPC_NOWAIT" , et l'erreur retourné devrait etre "EAGAIN" si le semaphore est deja à 0, mais apperement il me retourne toujours une autre erreur ;
voici mon code :
en faites, il va donc à chaque fois dans le default !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 int retval; /* Set up the sembuf structure. */ operations[0].sem_num = 0; operations[0].sem_op = -1; operations[0].sem_flg = IPC_NOWAIT; /* Faire l'operation */ retval = semop(semid, operations, 1); switch ( retval ) { case ( 0 ): /* Do nothing, semphore bien 'downed' */ break; case ( EAGAIN ): printf("on a bien tente mais pas attendu.\n"); break; default: perror("semop"); printf("sema down non effectue.\n"); }
si quelqu'un saurait m'aider pour résoudre ce probleme !!
Merci d'avance !!
Et bien finalement, j'ai trouvé une solution a mon probleme, je devais tester la variable errno, j'avais pas fait attention a cela !!!
Désolé pour le post mis pour rien, si quelqu'un sait le retirer qu'il n'hésite pas !!
Partager