Sorry, I don't see the point.
If my synapses are not too cluttered due to hanger (which could be, it's dinner time here :), your sub keeps the parent waiting for child's death, which is exactly what system does. But while system does this "efficiently", putting the parent process to sleep (I hope this happens in Windows as well, can't swear on it >;), this function does a quite active wait, given the WNOHANG option. So, it seems to me that not only this does not solve the problem, but increases CPU load!
What am I missing (apart a good dinner)?
Flavio (perl -e "print(scalar(reverse('ti.xittelop@oivalf')))")
Don't fool yourself.