ipxfwstopsig
- Date:
10-20-2011
NAME
IPXFWSTOPSIG - Returns part of the lower bits of signal number that terminates child process
SYNOPSIS
INTEGER FUNCTION IPXFWSTOPSIG(istat)INTEGER istat
IMPLEMENTATION
Cray Linux Environment (CLE)
DESCRIPTION
The IPXFWSTOPSIG integer function returns part of the lower bits of the signal number that caused the child process to stop. The PXFWIFSTOPPED logical function returns TRUE to indicate that the child process has stopped. IPXFWSTOPSIG should only be used if PXFWIFSTOPPED 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, i, j
integer iwstopsig, IPXFWSTOPSIG
logical lwifstopped, PXFWIFSTOPPED
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
j = 0
do i=1,100000
j = j + i
enddo
call PXFGETPID(ichldid,ierror)
if (ierror .ne. 0) then
print *, 'PXFGETPID FAILED, ierror=', ierror
print *, 'ichldid=', ichldid
else
print *, 'PXFGETPID PASSED'
endif
call PXFCONST("SIGSTOP",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
stop "CHILD"
else
call PXFCONST("WUNTRACED",iopts,ierror)
if (ierror .ne. 0) then
print *, 'PXFCONST FAILED, ierror=', ierror
print *, 'iopts=', iopts
else
print *, 'PXFCONST PASSED'
endif
CALL PXFWAITPID(ipid,istat,iopts,iretpid,ierror)
if (ierror .eq. 0) then
print *,'PASSED: PXFWAIT test'
lwifstopped = PXFWIFSTOPPED(istat)
if (lwifstopped .eqv. .TRUE.) then
iwstopsig = IPXFWSTOPSIG(istat)
if (iwstopsig .ne. 0) then
print *,'PXFWIFSTOPPED test PASSED'
print *,'IPXFWSTOPSIG test PASSED'
call PXFCONST("SIGCONT",isig,ierror)
if (ierror .ne. 0) then
print *,'PXFCONST FAILED,ierror=',ierror
print *,'isig=', isig
else
print *, 'PXFCONST PASSED'
endif
! continue the child process
call PXFKILL(ipid,isig,ierror)
else
print *,'PXFWIFSTOPPED test PASSED'
print *,'IPXFWSTOPSIG test FAILED'
print *,'PXFWIFSTOPPED returned TRUE'
print *,'IPXFWSTOPSIG(istat) = ',iwstopsig
print *,'istat = ', ipid
print *,'PXFWAIT istat = ', istat
print *,'iretpid= ', iretpid
endif
else
print *,'PXFWIFSTOPPED returned FALSE'
print *,'istat = ', ipid
print *,'PXFWAIT istat = ', istat
print *,'iretpid= ', iretpid
print *,'IPXFWSTOPSIG cannot be called.'
endif
else
print *,'FAILED: PXFWAIT call with error = ',ierror
print *,'istat = ', ipid
print *,'istat = ', istat
print *,'iretpid = ', iretpid
endif
endif
endif
print *,'test complete'
end
SEE ALSO
PXFWAIT(3F), PXFWIFSTOPPED(3F)