http://www.perlmonks.org?node_id=136421


in reply to mysterious fork() failure

The possible reasons for this are in the code you don't show. When you fork, you cannot know whether the child or parent runs first. If the parent runs first, and exits immediately, the child will be killed by the system's init process before it runs. Be sure to call wait() before exiting the parent. You should call exit() at the end of the child's code.

# create new directory here if ( !defined( $pid = fork() ) ) { # log fork() failure here # remove directory here } elsif ($pid == 0) { # remove directory here exit 0; } wait if $pid;

Update: Fixed pid logic according to dws's prescription

After Compline,
Zaxo

Replies are listed 'Best First'.
Re: Re: mysterious fork() failure
by fokat (Deacon) on Jan 05, 2002 at 23:23 UTC
    "...the child will be killed by the system's init process before it runs." is not true in Unix systems.

    If the parent exits/dies before the child, init will become its parent and wait() for it.