NAME
Proc::WaitStat - Interpret and act on wait() status values
SYNOPSIS
$description = waitstat $?;
exit waitstat_reuse $?;
waitstat_die $?, 'program-name';
close_die COMMAND, 'program-name';
DESCRIPTION
This module contains functions for interpreting and acting on wait status values.
Nothing is exported by default.
- waitstat wait-status
 - 
Returns a string representation of wait() status value wait-status. Values returned are like
"0"and"64"and"killed (SIGHUP)".This function is prototyped to take a single scalar argument.
 - waitstat_reuse wait-status
 - 
Turn wait-status into a value which can be passed to exit, converted in the same manner the shell uses. If wait-status indicates a normal exit, return the exit value. If wait-status instead indicates death by signal, return 128 plus the signal number.
This function is prototyped to take a single scalar argument.
 - waitstat_die wait-status program-name
 - 
die() if wait-status is non-zero (mentioning program-name as the source of the error).
This function is prototyped to take two scalar arguments.
 - close_die filehandle name
 - 
Close filehandle, if that fails die() with an appropriate message which refers to name. This handles failed closings of both programs and files properly.
This function is prototyped to take a filehandle (actually, a glob ref) and a scalar.
 
EXAMPLES
    close SENDMAIL;
    exit if $? == 0;
    log "sendmail failure: ", waitstat $?;
    exit EX_TEMPFAIL;
    $pid == waitpid $pid, 0 or croak "Failed to reap $pid: $!";
    exit waitstat_reuse $?;
    $output = `some-program -with args`;
    waitstat_die $?, 'some-program';
    print "Output from some-process:\n", $output;
    open PROGRAM, '| post-processor' or die "Can't fork: $!";
    while (<IN>) {
    	print PROGRAM pre_process $_
	    or die "Error writing to post-processor: $!";
    }
    # This handles both flush failures at close time and a non-zero exit
    # from the subprocess.
    close_die PROGRAM, 'post-processor';
AUTHOR
Roderick Schertler <roderick@argon.org>
SEE ALSO
perl(1), IPC::Signal(3pm).