majczel23000

[SO] 28.11.2017 - p1.c

Nov 28th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.06 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <sys/types.h>
  4. #include <sys/ipc.h>
  5. #include <sys/sem.h>
  6. #include <unistd.h>
  7. #include <sys/types.h>
  8. #include <sys/wait.h>
  9. #include "semafor.h"
  10.  
  11. int main()
  12. {
  13.     key_t key =  ftok(".",0);
  14.     int semId =  semCreate(key);
  15.     semInit(semId);
  16.     int PID = fork();
  17.     if(PID == -1)
  18.     {
  19.             perror("Blad tworzenia procesu\n");
  20.             exit(1);
  21.     }
  22.     else if(PID == 0)
  23.     {
  24.             int j=1;
  25.             for(int i=0;i<5;i++)
  26.             {
  27.             semDown(semId);
  28.                 printf("PID%d(%d) = %d\n",i+1,j++,getpid());
  29.                 printf("PID%d(%d) = %d\n",i+1,j++,getpid());
  30.                 printf("PID%d(%d) = %d\n",i+1,j,getpid());
  31.                 j= 1;
  32.                     sleep(2);
  33.                     semUp(semId);
  34.             }  
  35.     }
  36.     else
  37.     {
  38.             for(int i=0;i<5;i++)
  39.             {
  40.             semDown(semId);
  41.             printf("\t PID%d(%c) = %d\n",i+1,'A',getpid());
  42.             printf("\t PID%d(%c) = %d\n",i+1,'A'+1,getpid());
  43.             printf("\t PID%d(%c) = %d\n",i+1,'A'+2,getpid());
  44.             sleep(1);
  45.             semUp(semId);
  46.             }
  47.             wait(NULL);
  48.             semRemove(semId);
  49.     }
  50.  
  51. }
Add Comment
Please, Sign In to add comment