Advertisement
Guest User

Untitled

a guest
Apr 1st, 2015
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cstring>
  4. #include <utmp.h>
  5. #include <sys/types.h>
  6. #include <sys/ipc.h>
  7. #include <sys/sem.h>
  8. #include <sys/msg.h>
  9. #include <sys/shm.h>
  10. #include <pwd.h>
  11. #include <unistd.h>
  12. #include <errno.h>
  13. #include <queue>
  14. #include <string>
  15.  
  16. using namespace std;
  17.  
  18. // Shared memory sizes
  19. #define SHM_M_SIZE 5000
  20. #define SHM_PID_SIZE 500
  21.  
  22. // Semaphores Keys
  23. #define SEM1 10
  24. #define SEM2 11
  25. // MessageQueue Keys
  26. #define MQKEY 101
  27. // Shared Memory Keys
  28. #define SHM1 10
  29. #define SHM2 11
  30.  
  31. // queue for storing the messages
  32. queue<string> msg_queue;
  33.  
  34. void down(int sem_id, int sub_sem_id)
  35. {
  36. struct sembuf sop;
  37. sop.sem_num = sub_sem_id;
  38. sop.sem_op = -1;
  39. sop.sem_flg = 0;
  40. semop(sem_id,&sop,1);
  41. }
  42.  
  43. void up(int sem_id, int sub_sem_id)
  44. {
  45. struct sembuf sop;
  46. sop.sem_num = sub_sem_id;
  47. sop.sem_op = 1;
  48. sop.sem_flg = 0;
  49. semop(sem_id,&sop,1);
  50. }
  51.  
  52. void upn(int sem_id, int sub_sem_id,int n)
  53. {
  54. struct sembuf sop;
  55. sop.sem_num = sub_sem_id;
  56. sop.sem_op = n;
  57. sop.sem_flg = 0;
  58. semop(sem_id,&sop,1);
  59. }
  60.  
  61. void ctrl_c_handler(int dummy = 0)
  62. {
  63. // read the message and push it in the message queue
  64.  
  65. }
  66.  
  67. int main()
  68. {
  69. // check if server exists by checking ser.txt file
  70. if( access( "ser.txt", F_OK ) == -1 )
  71. {
  72. // server doesn't exist
  73. perror("Server doesn't exists!!");
  74. exit(1);
  75. }
  76. // Get the IPC resources
  77. // Semaphores
  78. int sem1,sem2;
  79. sem1 = semget(SEM1, 1, IPC_CREAT|0666); // Semaphore to provide mutual exclusion to the shared PID Array
  80. sem2 = semget(SEM2, 1, IPC_CREAT|0666); // Semaphore to provide mutual exclusion to the shared message segment
  81. // Message Queue
  82. int mq;
  83. mq = msgget(MQKEY,IPC_CREAT|0666); // Message queue to transfer messages to all the available MIDs
  84. // Shared Memory
  85. int shm1,shm2;
  86. // shm1 is shared PID array
  87. if((shm1 = shmget(SHM1, SHM_PID_SIZE,IPC_CREAT|0666)) == -1)
  88. {
  89. perror("Shared PID array was not created!");
  90. exit(1);
  91. }
  92. // shm2 is shared message section
  93. if((shm2 = shmget(SHM2, SHM_M_SIZE,IPC_CREAT|0666)) == -1)
  94. {
  95. perror("Shared Message Segment was not created!");
  96. exit(1);
  97. }
  98.  
  99.  
  100. return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement