Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.50 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <signal.h>
  5. #include <sys/wait.h>
  6.  
  7. int pid0;
  8.  
  9. void p1_handler(int signo);
  10.  
  11. int main(int argc,  char * argv[]) {
  12.     int pid1, status;
  13.     int N, cont=0;
  14.    
  15.     if (argc != 2){
  16.         fprintf(stderr, "P0: Numero di argomenti non valido\n");
  17.         exit(0);
  18.     }
  19.    
  20.     N = atoi(argv[1]);
  21.    
  22.     pid0 = getpid();
  23.    
  24.     pid1=fork();
  25.     if(pid1==0){
  26.         signal(SIGALRM, p1_handler);
  27.        
  28.         alarm(N);
  29.         while(1){
  30.             printf("Hello World %d\n", cont++);
  31.             sleep(1);
  32.         }
  33.     }
  34.     else if(pid1>0){
  35.         printf("Padre: ecco il mio pargolo, %d\n", pid1);
  36.     }
  37.     else {
  38.         perror("P0: Impossibile generare P1\n");
  39.         exit(-1);
  40.     }
  41.    
  42.     //papa saspetts figlio e stampa le sue info
  43.     for (int i=0; i<2; i++){
  44.            int pid_term = wait(&status);
  45.            if (pid_term < 0){
  46.                perror("Padre: Errore durante la wait\n");
  47.                exit(5);
  48.            }
  49.        
  50.            if ( WIFEXITED(status) ){
  51.                printf("Padre: Figlio con pid=%d terminato con stato di terminazione %d\n",pid_term, WEXITSTATUS(status));
  52.            }
  53.        
  54.            else if ( WIFSIGNALED(status) ){
  55.                fprintf(stderr, "Padre: Figlio con pid=%d terminato dal segnale num. %d\n", pid_term, WTERMSIG(status));
  56.            }
  57.        }
  58.    
  59.     return 0;
  60. }
  61.  
  62. void p1_handler(int signo){
  63.     kill(pid0, signo);
  64.     exit(1);
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement