Untitled
unknown
plain_text
2 years ago
1.5 kB
5
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...