Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. #include <unistd.h>
  2. #include <sys/types.h>
  3. #include <sys/wait.h>
  4. #include <sys/ipc.h>
  5. #include <sys/sem.h>
  6. #include "display.h"
  7.  
  8. int main()
  9. {
  10. struct sembuf up = {0, 1, 0};
  11. struct sembuf down = {0, -1, 0};
  12.  
  13. int v1, v2, v3, v4;
  14. int i;
  15.  
  16. //Create Semaphore
  17. int mySem = semget(IPC_PRIVATE, 1, 0600);
  18. v1 = semctl(mySem, 0, GETVAL);
  19. int mySem2 = semget(IPC_PRIVATE, 1, 0600);
  20.  
  21. //Up
  22. semop(mySem, &up, 1);
  23. v2 = semctl(mySem, 0, GETVAL);
  24. //semop(mySem2, &up, 1);
  25.  
  26. if (fork())
  27. {
  28. for (i=0;i<10;i++)
  29. {
  30. //Down
  31. semop(mySem, &down, 1);
  32. v3 = semctl(mySem, 0, GETVAL);
  33.  
  34. display("ab");
  35.  
  36. //Up
  37. semop(mySem2, &up, 1);
  38. v2 = semctl(mySem, 0, GETVAL);
  39. }
  40. wait(NULL);
  41. }
  42. else
  43. {
  44. for (i=0;i<10;i++)
  45. {
  46. //Down
  47. semop(mySem2, &down, 1);
  48. v3 = semctl(mySem, 0, GETVAL);
  49.  
  50. display("cd\n");
  51.  
  52. //Up
  53. semop(mySem, &up, 1);
  54. v2 = semctl(mySem, 0, GETVAL);
  55. }
  56.  
  57. //Destroy
  58. semctl(mySem, 0, IPC_RMID);
  59. v4 = semctl(mySem, 0, GETVAL);
  60. semctl(mySem2, 0, IPC_RMID);
  61. }
  62.  
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement