Minix Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
FORK(2)                       System Calls Manual                      FORK(2)

NAME
       fork - create a new process

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

       pid_t fork(void)

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

              The child process has a unique process ID.

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

              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 or
              write 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.

              The child starts with no pending signals and an  inactive  alarm
              timer.

RETURN VALUE
       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
       Fork  will  fail and no child process will be created if one or more of
       the following are true:

       [EAGAIN]       The  system-imposed  limit  on  the  total   number   of
                      processes under execution would be exceeded.  This limit
                      is  configuration-dependent.    (The   kernel   variable
                      NR_PROCS in <minix/config.h> (Minix), or <minix/const.h>
                      (Minix-vmd).)

       [ENOMEM]       There is  insufficient  (virtual)  memory  for  the  new
                      process.

SEE ALSO
       execve(2), wait(2).

3rd Berkeley Distribution        May 22, 1986                          FORK(2)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | SEE ALSO