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)