Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <sys/ipc.h>
- #include <sys/sem.h>
- #include "display.h"
- int main()
- {
- struct sembuf up = {0, 1, 0};
- struct sembuf down = {0, -1, 0};
- int v1, v2, v3, v4;
- int i;
- //Create Semaphore
- int mySem = semget(IPC_PRIVATE, 1, 0600);
- v1 = semctl(mySem, 0, GETVAL);
- int mySem2 = semget(IPC_PRIVATE, 1, 0600);
- //Up
- semop(mySem, &up, 1);
- v2 = semctl(mySem, 0, GETVAL);
- //semop(mySem2, &up, 1);
- if (fork())
- {
- for (i=0;i<10;i++)
- {
- //Down
- semop(mySem, &down, 1);
- v3 = semctl(mySem, 0, GETVAL);
- display("ab");
- //Up
- semop(mySem2, &up, 1);
- v2 = semctl(mySem, 0, GETVAL);
- }
- wait(NULL);
- }
- else
- {
- for (i=0;i<10;i++)
- {
- //Down
- semop(mySem2, &down, 1);
- v3 = semctl(mySem, 0, GETVAL);
- display("cd\n");
- //Up
- semop(mySem, &up, 1);
- v2 = semctl(mySem, 0, GETVAL);
- }
- //Destroy
- semctl(mySem, 0, IPC_RMID);
- v4 = semctl(mySem, 0, GETVAL);
- semctl(mySem2, 0, IPC_RMID);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement