IPB
>  Man Pages > Linux > openSUSE 10.2 > Section 2 > fork man page

fork man page

Section 2 - openSUSE 10.2 Man Pages

Other operating system man pages available here


Advanced Search

Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!


FORK(2)                    Linux Programmer's Manual                   FORK(2)



NAME
       fork - create a child process

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

       pid_t fork(void);

DESCRIPTION
       fork()  creates  a new process by duplicating the calling process.  The
       new process, referred to as the child, is an  exact  duplicate  of  the
       calling  process,  referred  to as the parent, except for the following
       points:

       *   The child has its own unique process ID,  and  this  PID  does  not
           match the ID of any existing process group (setpgid(2)).

       *   The  child's  parent process ID is the same as the parent's process
           ID.

       *   The child does not inherit its  parent's  memory  locks  (mlock(2),
           mlockall(2)).

       *   Process  resource utilisations (getrusage(2)) and CPU time counters
           (times(2)) are reset to zero in the child.

       *   The child set of  pending  signals  is  initially  empty  (sigpend-
           ing(2)).

       *   The  child  does  not inherit semaphore adjustments from its parent
           (semop(2)).

       *   The child does not inherit record locks from its parent (fcntl(2)).

       *   The  parent  does  not inherit timers from its parent (setitimer(2)
           alarm(3), timer_create(3)).

       *   The child does not inherit outstanding asynchronous I/O  operations
           from its parent (aio_read(3), aio_write(3)).

       The  process  attributes  in  the  preceding  list are all specified in
       POSIX.1-2001.  The parent and child also differ  with  respect  to  the
       following Linux-specific process attributes:

       *   The child does not inherit directory change notifications (dnotify)
           from its parent (see the description of F_NOTIFY in fcntl(2)).

       *   The prctl(2) PR_SET_PDEATHSIG setting is reset so  that  the  child
           does not receive a signal when its parent terminates.

       *   Memory   mappings   that  have  been  marked  with  the  madvise(2)
           MADV_DONTFORK flag are not inherited across a fork(2).

       *   The  termination  signal  of  the  child  is  always  SIGCHLD  (see
           clone(2)).

       Note the following further points:

       *   The  child  process  is created with a single thread — the one that
           called fork(2).  The entire virtual address space of the parent  is
           replicated in the child, including the states of mutexes, condition
           variables, and other pthreads objects; the use of pthread_atfork(3)
           may be helpful for dealing with problems that this can cause.

       *   The child inherits copies of the parent's set of open file descrip-
           tors.  Each file descriptor in the child refers to  the  same  open
           file description (see open(2)) as the corresponding file descriptor
           in the parent.  This means that the two descriptors share open file
           status flags, current file offset, and signal-driven I/O attributes
           (see the description of F_SETOWN and F_SETSIG in fcntl(2)).

       *   The child inherits copies of the parent's set of open message queue
           descriptors  (see  mq_overview(7)).   Each  descriptor in the child
           refers to the same open message queue  description  as  the  corre-
           sponding  descriptor  in  the  parent.   This  means  that  the two
           descriptors share the same flags (mq_flags).

RETURN VALUE
       On success, the PID of the child process is returned  in  the  parent's
       thread  of execution, and a 0 is returned in the child's thread of exe-
       cution.  On failure, a -1 will be returned in the parent's context,  no
       child process will be created, and errno will be set appropriately.

ERRORS
       EAGAIN fork()  cannot  allocate  sufficient memory to copy the parent's
              page tables and allocate a task structure for the child.

       EAGAIN It was not possible to create a new process because the caller's
              RLIMIT_NPROC  resource  limit  was  encountered.  To exceed this
              limit, the process must have either  the  CAP_SYS_ADMIN  or  the
              CAP_SYS_RESOURCE capability.

       ENOMEM fork()  failed  to  allocate  the  necessary  kernel  structures
              because memory is tight.

CONFORMING TO
       SVr4, 4.3BSD, POSIX.1-2001.

EXAMPLE
       See pipe(2) and wait(2).

NOTES
       Under Linux, fork() is implemented using copy-on-write  pages,  so  the
       only  penalty  that it incurs is the time and memory required to dupli-
       cate the parent's page tables, and to create a  unique  task  structure
       for the child.

SEE ALSO
       clone(2), execve(2), setrlimit(2), unshare(2), vfork(2), wait(2), capa-
       bilities(7)



Linux 2.6.17                      2006-09-04                           FORK(2)


Man(1) output converted with man2html and wrapped by fishsponge

This page was generated on Sat Sep 8 16:35:37 GMT 2007

Your favourite pages:

No pages logged yet.
Trying to save cookie...

Top 10 most popular pages:

sqlite3 man page (5334 hits)
(openSUSE 10.2)

svn man page (5208 hits)
(FreeBSD 6.2)

adv_cap_autoneg man page (4870 hits)
(Solaris 10 11_06)

CPAN man page (4607 hits)
(Suse Linux 10.1)

ssh man page (4342 hits)
(Suse Linux 10.1)

ssh-socks5-proxy-connect man page (2880 hits)
(Solaris 10 11_06)

netcat man page (2717 hits)
(Suse Linux 10.1)

pprosetup man page (2489 hits)
(Solaris 10 11_06)

startproc man page (2471 hits)
(Suse Linux 10.1)

signal man page (2408 hits)
(Suse Linux 10.1)

Useful Links

Go Back

Visitor Statistics


Valid XHTML 1.0 Transitional     Valid CSS!

Partners: Cambridge Plus :: Pyrenees Mountain Holidays :: PIC Micro Design, UK :: <Link Available>
Unix Man Pages / Linux Man Pages :: HiFi Forum :: SIP VoIP Phone & Provider Reviews :: UNIX/Linux Forum Archives

More info on advertising on Unix/Linux Forum