# PXFWAIT (L*X, M*X)

POSIX Subroutine: Waits for a child process.

## Module

USE IFPOSIX

CALL PXFWAIT (istat,iretpid,ierror)

istat | (Output) INTEGER(4). The returned status of the child process.
iretpid | (Output) INTEGER(4). The process ID of the stopped child process.
ierror | (Output) INTEGER(4). The error status.

If successful, ierror is set to zero; otherwise, an error code.

The PXFWAIT subroutine suspends execution of the current process until a child has exited, or until a signal is delivered whose action terminates the current process or calls a signal handling routine. If the child has already exited by the time of the call (a "zombie" process), a return is immediately made. Any system resources used by the child are freed.

The subroutine returns in iretpid the value of the process ID of the child that exited, or zero if no child was available. The returned value in istat can be used in subroutines IPXFWEXITSTATUS, IPXFWSTOPSIG, IPXFWTERMSIG, PXFWIFEXITED, PXFWIFSIGNALLED, and PXFWIFSTOPPED.

## Example

    program t1
    use ifposix
    integer(4) ipid, istat, ierror, ipid_ret, istat_ret
      print *," the child process will be born"
      call PXFFORK(IPID, IERROR)
      call PXFGETPID(IPID_RET,IERROR)
      if(IPID.EQ.0) then
         print *," I am a child process"
         print *," My child's pid is", IPID_RET
         call PXFGETPPID(IPID_RET,IERROR)
         print *," The pid of my parent is",IPID_RET
         print *," Now I have exited with code 0xABCD"
         call PXFEXIT(Z'ABCD')
      else
         print *," I am a parent process"
         print *," My parent pid is ", IPID_RET
         print *," I am creating the process with pid", IPID
         print *," Now I am waiting for the end of the child process"
         call PXFWAIT(ISTAT, IPID_RET, IERROR)
         print *," The child with pid ", IPID_RET," has exited"
         if( PXFWIFEXITED(ISTAT) ) then
           print *, " The child exited normally"
           istat_ret = IPXFWEXITSTATUS(ISTAT)
           print 10," The low byte of the child exit code is", istat_ret
         end if
      end if
    10 FORMAT (A,Z)
    end program

Parent topic: POSIX* Library Routines

## See Also

PXFWAITPID
IPXFWEXITSTATUS
IPXFWSTOPSIG
IPXFWTERMSIG
PXFWIFEXITED
PXFWIFSIGNALLED
PXFWIFSTOPPED