in reply to fork and zombies

waitpid looks for a particular child, and other signals may be lost. I like to keep the pid's as keys in a hash and delete them as they die:

delete $pid{+wait} while %pid;
Trying to do that in a for loop assumes that child processes will halt in a particular order.

After Compline,
Zaxo