asasassa
unknown
abc
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 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...