yes I do understand but it is not working.  In other words when cat 
/tmp/foo fails the blah blah blah is not ran. 
What I do not understand is the notes from the cookbook specifically  $exit_value  = 
$? >> 8;

How would I code this so that my if works b/c it sounds like to me as the notes say 
the return code is two 8 
bit values in one 16 bit number.


thank you , 
Derek B. Smith
OhioHealth IT
UNIX / TSM / EDM Teams






"Wiggins d Anconia" <[EMAIL PROTECTED]>
08/27/2004 04:12 PM

 
        To:     [EMAIL PROTECTED], [EMAIL PROTECTED]
        cc: 
        Subject:        Re: system call


> 
> All, 
> 
> I want to capture the exit value of a system call.  How can I do this? 
> My code is:
> 
> system  ( " cat /tmp/foo" );
>         if ( $? == 0 ) {
> 
>                 blah blah blah
>         }
> 
> 
> I read the cookbook  and it says :
> 
> Both wait and waitpid return the process ID that they just reaped and
set $? to the wait status of the defunct process. This status is
actually two 
> 8-bit values in one 16-bit number. The high byte is the exit value of 
the 
> process. The low 7 bits represent the number of the signal that killed
the 
> process, with the 8th bit indicating whether a core dump occurred. 
Here's 
> one way to isolate those values:
> $exit_value  = $? >> 8;
> $signal_num  = $? & 127;
> $dumped_core = $? & 128;
> 

So what don't you understand? C<$?> will be set automatically, using the
above code you can isolate the exit value as $exit_value. You have
seemingly answered your own question.

The

if ($? == 0) 

Is actually not completely correct, it will only be correct on
(standard) success, better to use the 3 lines of code you provided, and
check the specific exit value.

http://danconia.org



Reply via email to