gnu@perl has asked for the wisdom of the Perl Monks concerning the following question:
From what I understand, when you 'fork' a new copy of your complete program is started. My main question is this, where does the execution start from in the fork-ed program? It obviously cannot start from the beginning or it would go on forking forever. In my little example I understand why 'print "1. in pid $$\n";' is executed in the parent process ( ($pid = fork) is true), but why is it not executed in the child as well? If execution started from the beginning, it would fork again. Also, why in the child process does ($pid = fork) evaluate to false and run the 'else' portion? I hope I explained things clearly and TIA for your help. Chad.#!/usr/bin/perl -w if ($pid = fork) { print "1. in pid $$\n"; waitpid($pid,0); } else { print "2. in pid $$\n"; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Question on how fork works.
by samtregar (Abbot) on Jul 01, 2002 at 01:57 UTC | |
by mattriff (Chaplain) on Jul 01, 2002 at 02:02 UTC | |
by samtregar (Abbot) on Jul 01, 2002 at 03:31 UTC | |
|
Re: Question on how fork works.
by clintp (Curate) on Jul 01, 2002 at 01:59 UTC | |
|
Re: Question on how fork works.
by Abigail-II (Bishop) on Jul 01, 2002 at 12:45 UTC | |
|
Re: Question on how fork works.
by gnu@perl (Pilgrim) on Jul 01, 2002 at 02:07 UTC | |
|
Re: Question on how fork works.
by bronto (Priest) on Jul 01, 2002 at 10:01 UTC |