Elie De Brauwer wrote:
> Hello list,

Hello,

> I recently encountered a small oddity.  Suppose I have a process A:
> 
> #!/usr/bin/perl
> 
> use strict;
> 
> print "Hello \n";
> sleep 1;
> print "Goodbye\n";
> exit 9;
> 
> Simply shows some out and gives a certain exit code. A second process,
> simply calls fork, execs the child in a process and waits for the child
> in the other process. In Perl this can look like this:
> 
> my $cmd = "/home/user/proces.pl";
> my $pid = fork();
> if($pid == 0){
>     print "Hi I'm a child\n";
>     exec $cmd or die "Failed to run $cmd\n";
> }else{
>     print "Hi I'm a parent waiting for child with PID: $pid\n";
>     my $ret = waitpid($pid,0);
>     print "$pid exited with code ". ($?>>8) ."\n";
> }
> 
> The oddity i located in the last line. It seemd that I had to divide $?
> by 256 (or shift over 8 positions to the right) to get the correct exit
> code. So my question is:
> a) Is there an other way to wait for a child to die and get the exit code
> b) Can someone explain the odd behaviour of the exit code ?

Have you read the perl documentation on the functions and variables you are 
using?

perldoc perlipc
perldoc perlvar
perldoc -f fork
perldoc -f exec
perldoc -f waitpid



John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to