# PXFFORK (L*X, M*X)

POSIX Subroutine: Creates a child process that differs from the parent process only in its PID.

## Module

USE IFPOSIX

CALL PXFFORK (ipid,ierror)

ipid | (Output) INTEGER(4). The returned PID of the new child process.
ierror | (Output) INTEGER(4). The error status.

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

The PXFFORK subroutine creates a child process that differs from the parent process only in its PID. If successful, the PID of the child process is returned in the parent's thread of execution, and a zero is returned in the child's thread of execution. Otherwise, a -1 is returned in the parent's context and no child process is created.

## 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

IPXWEXITSTATUS