in reply to kill 0 always true
It may be true because you're making zombies.
To know when a child exits, install a SIGCHLD handler. If you set $SIG{CHLD} = 'IGNORE'; the kill trick will work. kill 0, $pid; is more useful for confirming the child has started, right after the fork. The wait or waitpid calls are often used, but since you're debugging a stuck process they are not suitable for you in the body of your program.
If you still are running when the child exits, the child's process hangs around until you read it or say you don't want it. Thus are born zombies if you dont handle them.
After Compline,
Zaxo
|
|---|