Untitled
unknown
plain_text
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 num)
{
if (num == 0) {
return 0;
}
else if (num == 1)
{
return 1;
}
else
{
return fib(num - 1) + fib(num - 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'%d\n",sum);
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){
signal(SIGINT,ctrl_handler);
for(int i = 0; i<20;i++){
printf("fib: %d \n",fib(i));//prima c'era solo i ora ho aggiunto fatt(i)
sleep(1);
}
}
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");
}
}
}
Editor is loading...