ipxfwtermsig

Date:

10-20-2011

NAME

IPXFWTERMSIG - Returns lower bit of signal that terminates a child process

SYNOPSIS

INTEGER FUNCTION IPXFWTERMSIG(istat)INTEGER istat

IMPLEMENTATION

Cray Linux Environment (CLE)

DESCRIPTION

The IPXFWTERMSIG integer function returns the lower bits of the signal number that caused the child process to terminate. The PXFWIFSIGNALED logical function returns TRUE when the child process has terminated because of a signal. IPXFWTERMSIG should be used only when PXFWIFSIGNALED returns TRUE.

The following argument is used for this routine:

istat

An input integer variable with the PXFWAIT or PXFWAITPID output status argument.

When using the Cray Fortran compiler, all arguments must be of default kind unless documented otherwise. The default kind is KIND=4 for integer, real, complex, and logical arguments.

EXAMPLES

program pxftest
integer istat, iretpid, ipid, ierror, ichldid
integer iwtermsig, IPXFWTERMSIG
logical lwifsignaled, PXFWIFSIGNALED
CALL PXFFORK(ipid,ierror)
if (ierror .ne. 0) then
     print *,'FAILED: PXFFORK call failed with error = ',ierror
else
print *,'PASSED: PXFFORK call'
  if (ipid .eq. 0) then
     call PXFGETPID(ichldid,ierror)
     if(ierror .ne. 0) then
        print *, 'PXFGETPID FAILED, ierror=', ierror
        print *,'ichldid=',ichldid
     else
        print *, 'PXFGETPID PASSED'
     endif
     call PXFCONST("SIGKILL",isig,ierror)
     if(ierror .ne. 0) then
         print *, 'PXFCONST FAILED, ierror=', ierror
         print *,'isig=',isig
     else
         print *, 'PXFCONST PASSED'
     endif
     call PXFKILL(ichldid,isig,ierror)
     if(ierror .ne. 0) then
         print *, 'PXFKILL FAILED, ierror=', ierror
         print *,'ichldid=',ichldid
         print *,'isig=',isig
     else
         print *, 'PXFKILL PASSED'
     endif
  else
          CALL PXFWAIT(istat,iretpid,ierror)
          if (ierror .eq. 0) then
              print *,'PASSED: PXFWAIT test'
              lwifsignaled = PXFWIFSIGNALED(istat)
              if (lwifsignaled .eqv. .TRUE.) then ! exit normally
                 iwtermsig = IPXFWTERMSIG(istat)
                 if (iwtermsig .ne. 0) then  ! exit(0) returned
                    print *,'PXFWIFSIGNALED test PASSED'
                    print *,'IPXFWTERMSIG test PASSED'
                 else
                    print *,'PXFWIFSIGNALED test PASSED'
                    print *,'IPXFWTERMSIG test FAILED'
                    print *,'PXFWIFSIGNALED returned FALSE'
                    print *,'IPXFWTERMSIG(istat) = ',iwtermsig
                    print *,'istat = ',istat
                 endif
              else
                 print *,'PXFWIFSIGNALED test FAILED'
                 print *,'PXFWIFSIGNALED returned FALSE'
                 print *,'PXFWAIT istat = ', istat
                 print *,'IPXFWEXITSTATUS cannot be called.'
              endif
          else
              print *,'FAILED: PXFWAIT call ierror = ',ierror
              print *,'istat = ', istat
              print *,'iretpid = ', iretpid
          endif
       endif
  endif
print *,'test complete'
end

SEE ALSO

PXFWAIT(3F), PXFWIFSIGNALED(3F)