asasassa

mail@pastecode.io avatar
unknown
abc
a year ago
1.5 kB
2
Indexable
Never
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <sys/wait.h>


int fib(int n){
  if(n<=1)return n;
  else return(fib(n-1)+fib(n+2));
}

int fatt(int n){
  if(n==0)return(1);
  else return (n*fatt(n-1));
}


void ctrl_handler(int sign){
    //int sum = fib(0)+fib(1)+fib(2)+fib(3);
    printf("La somma e'\n");
    signal(SIGINT,ctrl_handler);

}
void ctrl_handler2(int sign){
  char BUFF[50];
  printf("Per continuare premere (c) per uscire (q)\n");
  scanf("%s",BUFF);
  if(*BUFF=='c'){
      signal(SIGINT,ctrl_handler2);
  }
  else{
    exit(0);
  }
  
 
}

int main(){
  int pid1,pid2;
  
  pid1 = fork();
  
  if(pid1<0){  printf("Errore nella creazione del figlio\n");}
  
  if(pid1==0){
    signal(SIGINT,ctrl_handler);
    for(int i = 1; i<30;i++){
        printf("fib: %d \n",fib(i));
        sleep(1);//prima c'era solo i ora ho aggiunto fib(i)
   
    }
    }
    else if(pid1>0){
    //padre
      pid2 = fork();
        if(pid2<0){  printf("Errore nella creazione del figlio\n");}
      if(pid2== 0){
        signal(SIGINT,ctrl_handler2);
        for(int i = 0; i<20;i++){
        printf("fatt: %d \n",fatt(i));//prima c'era solo i ora ho aggiunto fatt(i)
        sleep(1);
        }
        }
    
    else if(pid2>0){
            signal(SIGINT,SIG_IGN);
            wait(NULL);
            wait(NULL);
            printf("\n I miei figli sono terminati\n termino anchhe io\n %d");

    }
    }
      }