No, the else you have at present needs a copy of everything you have at present
Code:pipe() fork() if ( p == 0 ) { // dup(), and run a process } else { pipe() fork() if ( p == 0 ) { // dup(), and run a process } else { // dup(), and run another } }