Project/Real_code/book/ch09/ch09-pipeline.c
void left_child(void)
{
	static char *left_argv[]  = { "echo", "hi", "there", NULL };

	close(pipefd[0]);
	close(1);
	dup(pipefd[1]);
	close(pipefd[1]);

	execvp("echo", left_argv);
	_exit(errno == ENOENT ? 127 : 126);
}
/* left_child --- do the work for the left child */
do the work for the left child
do the work for the left child
void left_child(void)
{
	static char *left_argv[]  = { "echo", "hi", "there", NULL };
	close(pipefd[0]);
	close(1);
	dup(pipefd[1]);
	close(pipefd[1]);
	execvp("echo", left_argv);
	_exit(errno == ENOENT ? 127 : 126);
}
void left_child ( void ) { static char * left_argv [ ] = { " " , " " , " " , NULL } ; close ( pipefd [ 0 ] ) ; close ( 1 ) ; dup ( pipefd [ 1 ] ) ; close ( pipefd [ 1 ] ) ; execvp ( " " , left_argv ) ; _exit ( errno == ENOENT ? 127 : 126 ) ; }
left_child --- do the work for the left child
left_child --- do the work for the left child