Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <utmp.h>
- #include <sys/types.h>
- #include <sys/ipc.h>
- #include <sys/sem.h>
- #include <sys/msg.h>
- #include <sys/shm.h>
- #include <pwd.h>
- #include <unistd.h>
- #include <errno.h>
- #include <queue>
- #include <string>
- using namespace std;
- // Shared memory sizes
- #define SHM_M_SIZE 5000
- #define SHM_PID_SIZE 500
- // Semaphores Keys
- #define SEM1 10
- #define SEM2 11
- // MessageQueue Keys
- #define MQKEY 101
- // Shared Memory Keys
- #define SHM1 10
- #define SHM2 11
- // queue for storing the messages
- queue<string> msg_queue;
- void down(int sem_id, int sub_sem_id)
- {
- struct sembuf sop;
- sop.sem_num = sub_sem_id;
- sop.sem_op = -1;
- sop.sem_flg = 0;
- semop(sem_id,&sop,1);
- }
- void up(int sem_id, int sub_sem_id)
- {
- struct sembuf sop;
- sop.sem_num = sub_sem_id;
- sop.sem_op = 1;
- sop.sem_flg = 0;
- semop(sem_id,&sop,1);
- }
- void upn(int sem_id, int sub_sem_id,int n)
- {
- struct sembuf sop;
- sop.sem_num = sub_sem_id;
- sop.sem_op = n;
- sop.sem_flg = 0;
- semop(sem_id,&sop,1);
- }
- void ctrl_c_handler(int dummy = 0)
- {
- // read the message and push it in the message queue
- }
- int main()
- {
- // check if server exists by checking ser.txt file
- if( access( "ser.txt", F_OK ) == -1 )
- {
- // server doesn't exist
- perror("Server doesn't exists!!");
- exit(1);
- }
- // Get the IPC resources
- // Semaphores
- int sem1,sem2;
- sem1 = semget(SEM1, 1, IPC_CREAT|0666); // Semaphore to provide mutual exclusion to the shared PID Array
- sem2 = semget(SEM2, 1, IPC_CREAT|0666); // Semaphore to provide mutual exclusion to the shared message segment
- // Message Queue
- int mq;
- mq = msgget(MQKEY,IPC_CREAT|0666); // Message queue to transfer messages to all the available MIDs
- // Shared Memory
- int shm1,shm2;
- // shm1 is shared PID array
- if((shm1 = shmget(SHM1, SHM_PID_SIZE,IPC_CREAT|0666)) == -1)
- {
- perror("Shared PID array was not created!");
- exit(1);
- }
- // shm2 is shared message section
- if((shm2 = shmget(SHM2, SHM_M_SIZE,IPC_CREAT|0666)) == -1)
- {
- perror("Shared Message Segment was not created!");
- exit(1);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement