[UNIX] problème avec les sémaphores

problème avec les sémaphores [UNIX] - Programmation

Marsh Posté le 09-05-2002 à 17:48:18    

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;
}

Reply

Marsh Posté le 09-05-2002 à 17:48:18   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed