*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> fork (2)              
Title
Content
Arch
Section
 

FORK(2)

Contents


NAME    [Toc]    [Back]

     fork - create a new process

SYNOPSIS    [Toc]    [Back]

     #include <sys/types.h>
     #include <unistd.h>

     pid_t
     fork(void);

DESCRIPTION    [Toc]    [Back]

     fork() causes creation of a new process.   The  new  process
(child process)
     is an exact copy of the calling process (parent process) except for the
     following:

           +o   The child process has a unique process ID.

           +o   The child process has a different  parent  process
ID (i.e., the
               process ID of the parent process).

           +o   The child process has its own copy of the parent's
descriptors.
               These descriptors reference  the  same  underlying
objects, so
               that,  for instance, file pointers in file objects
are shared
               between the child  and  the  parent,  so  that  an
lseek(2) on a descriptor
  in the child process can affect a subsequent read(2)
               or write(2) by the parent.  This descriptor  copying is also
               used  by the shell to establish standard input and
output for
               newly created processes  as  well  as  to  set  up
pipes.

           +o    The  child process' resource utilizations are set
to 0; see
               setrlimit(2).

           +o   All interval timers are cleared; see setitimer(2).

     In  general,  the  child process should call _exit(2) rather
than exit(3).
     Otherwise, any stdio buffers that exist both in  the  parent
and child will
     be  flushed  twice.   Similarly,  _exit(2) should be used to
prevent
     atexit(3) routines from being called twice (once in the parent and once
     in the child).

RETURN VALUES    [Toc]    [Back]

     Upon  successful  completion, fork() returns a value of 0 to
the child process
 and returns the process ID of the child process to  the
parent process.
   Otherwise,  a  value of -1 is returned to the parent
process, no
     child process is created, and the global variable  errno  is
set to indicate
 the error.

ERRORS    [Toc]    [Back]

     fork() will fail and no child process will be created if:

     [EAGAIN]   The  system-imposed  limit on the total number of
processes under
               execution would be exceeded.  This limit  is  configuration-dependent.


     [EAGAIN]  The limit RLIMIT_NPROC on the total number of processes under
               execution by the user ID would be exceeded.

     [ENOMEM]  There is insufficient swap space for the new  process.

SEE ALSO    [Toc]    [Back]

      
      
     execve(2), setrlimit(2), wait(2)

STANDARDS    [Toc]    [Back]

     The   fork()  function  conforms  to  IEEE  Std  1003.1-1990
(``POSIX'').

HISTORY    [Toc]    [Back]

     A fork() function call appeared in Version 2 AT&T UNIX.

OpenBSD      3.6                           June      4,      1993
[ Back ]
 Similar pages
Name OS Title
pcreate IRIX create a process
clone Linux create a child process
fork Linux create a child process
setsid FreeBSD create session and set process group ID
setsid OpenBSD create session and set process group ID
cvhang IRIX create a process in a hung state
setsid NetBSD create session and set process group ID
sproc IRIX create a new share group process
setsid HP-UX create session and set process group ID
setpgrp3 HP-UX create session and set process group ID; for HP-UX 9.x compatibility.
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service