I see what you are saying.
Acutally, I think the first part of what you said may be the cause of the problem, I'm still ending up with this running in SERIAL with the waitpid() inside the for loop.
But I'm unclear as to how your code can be used to do what I need. The parent needs to be able to see what the child puts out. Since I'm no longer doing the 2-way pipe that was set up, where does the child give it's data back to the parent process? You threw in comments about 'child stuff' and 'gather children', but your design changes the way it all works. Could you be more clear about that?