Advertisement
Guest User

Untitled

a guest
Feb 7th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.12 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <fcntl.h>           /* Pour les constantes O_ */
  4. #include <sys/stat.h>        /* Pour les constantes de mode */
  5. #include <semaphore.h>
  6.  
  7. #define SHM_FAIL = -1;
  8. #define SHM_SUCCESS = 1;
  9.  
  10. int main( int argc, char *argv[] )
  11. {
  12.   unsigned int val;
  13.   int sem_val;
  14.   char * nom;
  15.   int ok;
  16.   int pid;
  17.  
  18.   if (argc < 3){
  19.     fprintf(stderr, "Veuillez spécifier le nom du sémaphore "
  20.       " à  créer ainsi que ça valeur.\n");
  21.     exit(EXIT_FAILURE);
  22.   }
  23.  
  24.   nom = argv[1];
  25.   val = atoi(argv[2]);
  26.  
  27.   shm = shm_open( nom, O_CREAT|O_EXCL, S_IRWXU, val );
  28.  
  29.   if(shm == SHM_FAIL){
  30.     fprintf( stderr, "Erreur, lors de la création du sémaphore %s.\n",nom );
  31.     exit( EXIT_FAILURE );
  32.   } else {
  33.     ftruncate( sem, &sem_val );
  34.     printf( "Sémaphore %s créé avec valeur %d.\n", nom, sem_val );
  35.   }
  36.  
  37.   pid = fork();
  38.  
  39.   if(pid != 0){
  40.     printf("Je suis le père\n");
  41.     sleep(1);
  42.     sem_post(sem);
  43.     wait(NULL);
  44.   } else {
  45.     sem_wait(sem);
  46.     printf("Je suis le fils\n");
  47.     sem_close(sem);
  48.     sem_unlink(nom);
  49.   }
  50.  
  51.   return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement