pipe + exec duplicate stdout linux

Shell
void ejecutar(char **argv){/*Funcion que ejecuta el exec*/

		
		int pip[2];
		pid_t pid;
		pid = fork();
		//printf(stdout);
		char buf[128];

		if(pid == -1){/*ERROR AL HACER FORK*/
			perror("FALLA FORK");
			exit(EXIT_FAILURE);
		}else if(pid == 0){/*PORCESO HIJO*/
			close(pip[0]);/*cerramos la entrada*/
			write(pip[1],buf,sizeof(buf));/*escribimos por el buffer*/
			close(pip[1]);
			exit(0);
			if(execvp(argv[0],argv)){
						perror("Falla Exec");
						exit(1);
			}
		}else{/*PROCESO PADRE*/
			wait(NULL);
			close(pip[1]);/*cerramos la salida*/
			read(pip[0],buf,sizeof(buf));
			close(pip[0]);
			wait(NULL);
			//kill(ret,SIGTERM);
			
			
		}
	
	}
Source

Also in Shell: