rendered paste body#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <stdlib.h>#include <sys/wait.h>#include <sys/stat.h>#include <fcntl.h>int main(){ const int TBUF=50; int p[2], q[2]; int fd; char buffer[TBUF+1]; int nblu; int pidF, pidPf; int i; int nbLigne; //Creation du premier tube if((pipe(p)) != 0) { perror("pipe"); exit(EXIT_FAILURE); } //Creation du second tube if((pipe(q)) != 0) { perror("pipe2"); exit(EXIT_FAILURE); } pidF=fork(); switch (pidF){ case -1 : perror("Erreur lors de la creation du processus fils. \n"); exit(EXIT_FAILURE); case 0 : pidPf=fork(); switch (pidPf){ case -1 : perror("Erreur lors de la creation du processus petit fils. \n"); exit(EXIT_FAILURE); case 0 : close(p[1]); while(read(p[0], buffer, TBUF)>0) { /*for(i=0 ;i < TBUF; i++) { printf("%c",buffer[i]); }*/ } nbLigne = execlp("wc","wc","-l",(char *)NULL); printf("%d",nbLigne); break; default : close(p[0]); fd=open("toto.txt",O_RDONLY); while(nblu=read(fd,buffer,TBUF+1)>0){ buffer[nblu]='\0'; if(nblu < 0) { perror("Erreur lors de la lecture du fichier\n"); exit(1); } write(p[1],buffer,TBUF); } wait(NULL); break; } break; default : ; break; } return 0;}