Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/ipc.h>
- #include <sys/sem.h>
- int semafor;
- static void semafor_p(void)
- {
- int zmien_sem;
- struct sembuf bufor_sem;
- bufor_sem.sem_num=0;
- bufor_sem.sem_op=-1;
- bufor_sem.sem_flg=SEM_UNDO;
- zmien_sem=semop(semafor,&bufor_sem,1);
- if (zmien_sem==-1)
- {
- printf("Nie moglem zamknac semafora.\n");
- exit(EXIT_FAILURE);
- }
- else
- {
- printf("Semafor zostal zamkniety.\n");
- }
- }
- static void semafor_v(void)
- {
- int zmien_sem;
- struct sembuf bufor_sem;
- bufor_sem.sem_num=0;
- bufor_sem.sem_op=1;
- bufor_sem.sem_flg=SEM_UNDO;
- zmien_sem=semop(semafor,&bufor_sem,1);
- if (zmien_sem==-1)
- {
- printf("Nie moglem otworzyc semafora.\n");
- exit(EXIT_FAILURE);
- }
- else
- {
- printf("Semafor zostal otwarty.\n");
- }
- }
- int main(int argc, char* argv[])
- {
- int i, liczba_sk = atoi(argv[2]);
- printf("Zaladowano proces, PID: %i, SEM: %i\n", getpid(), atoi(argv[1]));
- semafor = semget(1000124, atoi(argv[1]), 0777 | IPC_CREAT);
- for(i=0; i<liczba_sk; i++)
- {
- semafor_p();
- sleep(3);
- semafor_v();
- puts("");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement