Hello list,
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 ?
greetings
E.
--
Elie De Brauwer
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>