Advertisement
Guest User

lololol

a guest
Apr 28th, 2015
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. #define _GNU_SOURCE
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <sys/ipc.h>
  5. #include <sys/sem.h>
  6. #include <unistd.h>
  7. #include <sys/wait.h>
  8.  
  9. int main(){
  10. unsigned int semid;
  11. struct sembuf up1 = {0, 1, 0}; //number, operation, flag
  12. struct sembuf down1 = {0, -1, 0}; //number, operation, flag
  13. struct sembuf up2 = {1, 1, 0};
  14. struct sembuf down2 = {1, -1, 0};
  15.  
  16. semid = semget(IPC_PRIVATE, 2, 0666|IPC_CREAT);//crée 1 sémaphore
  17. semctl(semid, 0, SETVAL, 0); //initialise la valeur à 0 sur le premier sémaphore
  18. semctl(semid, 1, SETVAL, 0);
  19. int i = 0;;
  20. int PID = fork();
  21.  
  22. if (PID == 0)
  23. {
  24. for(i=0;i<5;i++)
  25. {
  26. printf("COUCOU C'EST LE FILS\n");
  27. semop(semid, &up1, 1);
  28. semop(semid, &down2, 1);
  29. }
  30. }
  31. else
  32. {
  33. for(i=0;i<5;i++)
  34. {
  35. semop(semid, &down1, 1);
  36. printf(" %d \n",i+1);
  37. semop(semid, &up2, 1);
  38. }
  39. //effectue un up (operation 1)
  40. }
  41.  
  42. semctl(semid, 0, IPC_RMID);
  43. semctl(semid, 1, IPC_RMID);
  44. return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement