rendered paste body#include <stdio.h>#include <unistd.h>#include <sys/wait.h>#include <string.h>#include "termine.h"int le_tube[2];void traite_le_fils(int num_fils){ close(1); dup(le_tube[1]); close(le_tube[1]); close(le_tube[0]); switch(num_fils) { case 1: printf("Lancement calc1\n"); if(execl("./calc1", "calc1", NULL)==-1) termine("Probleme lors du lancement de calc1"); break; case 2: printf("Lancement calc2\n"); if(execl("./calc2", "calc2", NULL)==-1) termine("Probleme lors du lancement de cal2"); break; case 3: printf("Lancement calc3\n"); if(execl("./calc3", "calc3", NULL)==-1) termine("Probleme lors du lancement de calc3"); break; }}void traite_le_pere(){ char buff; int i; close(le_tube[1]); while(1) { printf("os\n"); while(read(le_tube[0], &buff, 1)!=0) printf("%c", buff); }} int main(){ if(pipe(le_tube) == -1) termine("Erreur lors de la création du tube"); if(fork() ==0) { traite_le_fils(1); } else // Processus Pere { if(fork()==0) { traite_le_fils(2); } else // Processus Pere { if(fork()==0) { traite_le_fils(3); } else // Processus Pere { traite_le_pere(); } } } return 0;}