http://qs321.pair.com?node_id=675458


in reply to Forking problems

Here is a little example of using fork():
if(my $pid = fork){ print "I am the parent my pid is $$ and my child has pid: $pid\n"; } elsif(defined $pid and $pid == 0){ print "I am the child and my pid is $$\n"; } else{ print "Oh no :-(\n"; }
Update: Oops fixed bug pointed out by pc88mxer below.

Replies are listed 'Best First'.
Re^2: Forking problems
by pc88mxer (Vicar) on Mar 21, 2008 at 17:00 UTC
    undef will evaluate to 0 in numeric context, so you'll really want:
    if (!defined(my $pid = fork)) { print "Oh no\n"; } elsif ($pid == 0) { print "in child\n"; } else { print "in parent\n"; }
Re^2: Forking problems
by ikegami (Patriarch) on Mar 22, 2008 at 01:14 UTC
    The and $pid == 0 in your updated solution is redundant. It will always be true.