Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5939 connectés 

 


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

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
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;
}

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)