in reply to Monitoring child processes

In addition to moritz's comment about waitpid: SIGCHLD is handled differently to other signals on most UNIX's, in that it does not by default kill the process it signals.
On Linux, check man 7 signal for more information. It is possible that Solaris handles them differently, so it would be wise to look at the equivalent man pages there as well.