PCREATE(3C)                                                        PCREATE(3C)


NAME
     pcreate: pcreatel, pcreatev, pcreateve, pcreatelp, pcreatevp - create a
     process

SYNOPSIS
     #include <unistd.h>

     int pcreatel(const char *path, const char *arg0, ...,
               const char *argn, 0);

     int pcreatev(const char *path, char * const *argv);

     int pcreateve(const char *path, char * const *argv,
               char * const*envp);

     int pcreatelp(const char *file, const char *arg0, ...,
               const char *argn, 0);

     int pcreatevp(const char *file, char * const *argv);

DESCRIPTION
     pcreate in all its forms creates a new process and runs the requested
     program.  These routines are equivalent to a fork(2) and exec(2) pair
     except that the caller incurs only a small logical swap space penalty
     compared to fork.  pcreate (using sproc(2)) requires that the calling
     process have enough virtual space left (see setrlimit(2)) to create a
     temporary 32K stack for the new process.  This new stack also requires
     system logical swap space.  A fork on the other hand duplicates the
     calling process, which requires the system to reserve logical swap space
     for all modifiable portions of the calling process.  A very large process
     may not be allowed to fork due to insufficient backing store (swap area).

CAVEAT
     The POSIX thread model (i.e. Pthreads) is incompatible with the sproc(2)
     model of threading.  As such the pcreate(3C) family of calls cannot be
     used with Pthreads.

SEE ALSO
     fork(2), exec(2), prctl(2), setrlimit(2), sproc(2).

DIAGNOSTICS
     All diagnostics are from either sproc(2) or exec(2).


                                                                        Page 1