This function 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 this function,
or
waitpid
. A common strategy to avoid such zombies is:

$SIG{CHLD} = sub { wait };

If you expected a child and didn't find it, you probably had a call to
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.