I do a fair bit of work on streaming real time data and I've found that a process model for isolating different bits of my system from each other works very well. It's often very convenient/terse to be able to popen a child process and read data from it in a streaming fashion for the life of a program. However, if a child process isn't properly wait()-ed on before the parent ends, you can pretty easily end up with zombies or orphans.
What I'm looking for is basically what it would take to get RAII-style guarantees on child processes being properly cleaned up. Ideally without regard to how the parent exits, be it in response to a signal, calling exit(), throwing an exception, whatever. I'd like to sleep easy knowing I can't ever generate a zombie or orphaned process.