Advertisement
Guest User

Untitled

a guest
Jul 9th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <stdlib.h>
  4. #include <sys/types.h>
  5. #include <sys/ipc.h>
  6. #include <sys/sem.h>
  7.  
  8. int semafor;
  9.  
  10. static void semafor_p(void)
  11.   {
  12.     int zmien_sem;
  13.     struct sembuf bufor_sem;
  14.     bufor_sem.sem_num=0;
  15.     bufor_sem.sem_op=-1;
  16.     bufor_sem.sem_flg=SEM_UNDO;
  17.     zmien_sem=semop(semafor,&bufor_sem,1);
  18.     if (zmien_sem==-1)
  19.       {
  20.         printf("Nie moglem zamknac semafora.\n");
  21.         exit(EXIT_FAILURE);
  22.       }
  23.     else
  24.       {
  25.         printf("Semafor zostal zamkniety.\n");
  26.       }
  27.   }
  28.  
  29. static void semafor_v(void)
  30.   {
  31.     int zmien_sem;
  32.     struct sembuf bufor_sem;
  33.     bufor_sem.sem_num=0;
  34.     bufor_sem.sem_op=1;
  35.     bufor_sem.sem_flg=SEM_UNDO;
  36.     zmien_sem=semop(semafor,&bufor_sem,1);
  37.     if (zmien_sem==-1)
  38.       {
  39.         printf("Nie moglem otworzyc semafora.\n");
  40.         exit(EXIT_FAILURE);
  41.       }
  42.     else
  43.       {
  44.         printf("Semafor zostal otwarty.\n");
  45.       }
  46.   }
  47.  
  48. int main(int argc, char* argv[])
  49. {
  50.     int i, liczba_sk = atoi(argv[2]);
  51.    
  52.     printf("Zaladowano proces, PID: %i, SEM: %i\n", getpid(), atoi(argv[1]));
  53.    
  54.     semafor = semget(1000124, atoi(argv[1]), 0777 | IPC_CREAT);
  55.    
  56.     for(i=0; i<liczba_sk; i++)
  57.     {
  58.         semafor_p();
  59.    
  60.         sleep(3);
  61.    
  62.         semafor_v();
  63.         puts("");
  64.     }
  65.    
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement