asasassa
unknown
abc
3 years ago
1.5 kB
8
Indexable
#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");
}
}
}
Editor is loading...