wait
Waits for a child process to terminate and returns the pid of the deceased process, or
-1
if there are no child processes. The status is returned in
$?
. If you get zombie child processes, you should be calling either this function or
waitpid
. A common strategy to avoid such zombies is:
If you expected a child and didn't find it, you probably had a call to$SIG{CHLD} = sub { wait };
system
, a close on a pipe, or backticks between the
fork
and the
wait
. These constructs also do a
wait(2)
and may have harvested your child process. Use
waitpid
to avoid this problem.