I am having some trouble with the behavior of subsequent calls of waitpid() on fork()'ed processes with stdio redirected via pipe().

In trying to emulate "echo 12345 | grep 1" the correct output is generated, but it would appear that the grep process (via execvp) never dies, so the call to waitpid() on its pid stalls forever.

Any ideas?

Code @:
http://codepad.org/iIUMh1FZ