Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: Multiple forks get re-executed

by PrakashK (Pilgrim)
on Jul 10, 2001 at 00:18 UTC ( #95136=note: print w/replies, xml ) Need Help??

in reply to Multiple forks get re-executed

You must explicitly terminate the child process that fork created, once it's job is done. Otherwise, it continues to exist.

In your pseudo-code, the code after fork is executed by both the parent and the child. If you want only one of them to do "stuff" (usually child -- that's why you forked, right?), you must explicitly check the return code of fork to determine the identity of the process and assign "work" to it.

fork returns the pid of the child process to the parent, and returns 0 to the child process.

Please see below:

sub RUN { my $arg = shift; if (fork) { # parent process # do whatever parent is supposed to do wait; } else { # child process do stuff on $arg; exit; } }
In practice, you should check for possible errors in the fork call. Please see the camel book for an example (p. 715 in 3rd edition).


Replies are listed 'Best First'.
Re: Re: Multiple forks get re-executed
by pltommyo (Initiate) on Jul 19, 2001 at 18:30 UTC
    Thanks. This is what I ended up using. The code is a generalized subroutine that does a task for my users, but it is at their discretion as to whether they wish to fork or not, as it is also at their discretion to choose where to reap their children. Tommy O

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://95136]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (4)
As of 2016-10-21 01:35 GMT
Find Nodes?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?

    Results (284 votes). Check out past polls.