| |||||
| Dernière réponse | |
|---|---|
| Sujet : [UNIX] problème avec les sémaphores | |
| dahwoud | Salut je fais des tests sur les sémaphores system V. Cependant, avec le tout petit programme suivant, ça ne semble pas fonctionner et je ne comprends pas pourquoi. Auriez-vous une petite idée ?
merci #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> #define NB_SEM 1 #define sema 0 void P (int semid, int sem) { struct sembuf buf; buf.sem_num = sem; buf.sem_op = - 1; semop(semid,&buf,1); } void V (int semid, int sem) { struct sembuf buf; buf.sem_num = sem; buf.sem_op = 1; semop(semid,&buf,1); } int main (void) { key_t cle; int semid, pid,i; cle = ftok("/usr/include",'1'); if((semid = semget(cle,NB_SEM,IPC_CREAT | 0666)) == -1) { printf("Erreur creation groupe semaphores\n" ); exit(1); } semctl(semid,sema,SETVAL,1); pid=fork(); if(pid!=0) { sleep(5); while(1) { P(semid,sema); for(i=0;i<=5;i++) { printf("___%i\n",getpid()); sleep(1); } V(semid,sema); } } else { while(1) { P(semid,sema); for(i=0;i<=5;i++) { printf("___%i\n",getpid()); sleep(1); } V(semid,sema); } } return 0; } |
| Vue Rapide de la discussion |
|---|