Advertisement
RemigiuszP

Potomek/przodek zad4

Nov 18th, 2019
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.48 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<unistd.h>
  3. #include<sys/types.h>
  4. #include<sys/wait.h>
  5. #include<signal.h>
  6. #include<string.h>
  7. #include<stdlib.h>
  8. #include<errno.h>
  9. #include<time.h>
  10.  
  11. void sign(int _sig)
  12. {
  13.     switch(_sig)
  14.     {
  15.         case SIGUSR1:
  16.             printf("Ojciec: dostalem od syna wiadomosc typu 1\n");
  17.         break;
  18.         case SIGUSR2:
  19.             printf("Ojciec: dostalem od syna wiadomosc typu 2\n");
  20.         break;
  21.     }  
  22.    
  23. }
  24.  
  25. int main()
  26. {
  27.     srand(time(NULL));
  28.     int pid, losowa, przodek;
  29.     /*
  30.     sigset_t iset;
  31.     struct sigaction my_sig;
  32.     sigemptyset(&iset);
  33.     my_sig.sa_mask = iset;
  34.     my_sig.sa_flags = 0;
  35.     my_sig.sa_handler = &sign;
  36.     my_sig.sa_flags = SA_SIGINFO;
  37.     my_sig.sa_sigaction = &sign;  
  38.    
  39.    
  40.     sigaction(SIGUSR1, &my_sig, NULL);
  41.     sigaction(SIGUSR2, &my_sig, NULL);
  42.     */
  43.    
  44.     signal(SIGUSR1, sign);
  45.     signal(SIGUSR2, sign);
  46.    
  47.     pid = fork();
  48.    
  49.    
  50.     if(pid == 0)
  51.     {
  52.         przodek = getppid();
  53.         sleep(1);
  54.         while(1)
  55.         {
  56.             losowa = (rand() % 2) + 1;
  57.             if(losowa == 1)
  58.                 kill(przodek, SIGUSR1);
  59.             else if(losowa == 2)  
  60.                 kill(przodek, SIGUSR2);
  61.             else
  62.                 printf("Potomek: BLAD!\n");
  63.                
  64.             sleep(1);
  65.            
  66.         }
  67.        
  68.     }
  69.     else if(pid > 0)
  70.     {
  71.         wait(&pid);
  72.     }
  73.     else
  74.     {
  75.         fprintf(stderr, strerror(errno), "\n");
  76.     }
  77.    
  78.    
  79.     exit(0);
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement