in reply to Re: Re: Background process using a system call
in thread Background process using a system call

ummm...according to "perldoc perlfunc" my parent/child comments aren't backwards.

Fork Does a fork(2) system call to create a new process running the same program at the same point. It returns the child pid to the parent process, `0' to the child process, or `undef' if the fork is unsuc­cessful.

In your code example you have

if (my $pid = fork()) { # a true or non-zero value for the parent # stuff } else { # a false value or 0 for the child # stuff }
Your logic is the same as mine.

I used system because that is what he was using, it makes it clearer (at least to me) how his example correlated to my solution. I also tend to leave out the extra error checking because it can cause one to miss the point of the example...and by that token, you're not checking to see if your fork failed. :)

To error test everything I guess the code would look like

foreach my $wks (@wkslist) { my $pid = fork; if (!defined($pid)) { die "fork failed: $!"; } elsif ($pid == 0) { # child print "rshing to $wks\n"; exec("$rsh_cmd $wks ls") || die "exec failed for $wks: $!"; } else { push(@pids,$pid); } } foreach my $pid (@pids) { waitpid($pid,0); if ($? != 0) { print "non zero exit from $pid: $?"; } }
give me a bit and I'll figure out how to make $? look pretty :)

/\/\averick
perl -l -e "eval pack('h*','072796e6470272f2c5f2c5166756279636b672');"