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

  man pages->HP-UX 11i man pages -> fork (2)              


 fork(2)                                                             fork(2)

 NAME    [Toc]    [Back]
      fork - create a new process

 SYNOPSIS    [Toc]    [Back]
      #include <unistd.h>

      pid_t fork(void);

 DESCRIPTION    [Toc]    [Back]
      The fork() system call causes the creation of a new process. The new
      child process is created wth exactly one thread or lightweight
      process. The new child process contains a replica of the calling
      thread (if the calling process is multi-threaded) and its entire
      address space, possibly including the state of mutexes and other

      If the calling process is multi-threaded, the child process may only
      execute async-signal safe functions until one of the exec functions is
      called. Fork handlers may be installed via pthread_atfork() in order
      to maintain application invariants across fork() calls (i.e, release
      resources such as mutexes in the child process).

      The child process inherits the following attributes from the parent

           +  Real, effective, and saved user IDs.
           +  Real, effective, and saved group IDs.
           +  List of supplementary group IDs (see getgroups(2)).
           +  Process group ID.
           +  Environment.
           +  File descriptors.
           +  Close-on-exec flags (see exec(2)).
           +  Signal handling settings (SIG_DFL, SIG_IGN, address).
           +  Signal mask (see sigvector(2)).
           +  Profiling on/off status (see profil(2)).
           +  Command name in the accounting record (see acct(4)).
           +  Nice value (see nice(2)).
           +  All attached shared memory segments (see shmop(2)).
           +  Current working directory
           +  Root directory (see chroot(2)).
           +  File mode creation mask (see umask(2)).
           +  File size limit (see ulimit(2)).
           +  Real-time priority (see rtprio(2)).

      Each of the child's file descriptors shares a common open file
      description with the corresponding file descriptor of the parent.
      This implies that changes to the file offset, file access mode, and
      file status flags of file descriptors in the parent also affect those
      in the child, and vice-versa.

 Hewlett-Packard Company            - 1 -   HP-UX 11i Version 2: August 2003

 fork(2)                                                             fork(2)

      The child process differs from the parent process in the following

           The child process has a unique process ID.

           The child process ID does not match any active process group ID.

           The child process has a different parent process ID (which is the
           process ID of the parent process).

           The set of signals pending for the child process is initialized
           to the empty set.

           The trace flag (see the ptrace(2) PT_SETTRC request) is cleared
           in the child process.

           The AFORK flag in the ac_flags component of the accounting record
           is set in the child process.

           Process locks, text locks, and data locks are not inherited by
           the child (see plock(2)).

           All semadj values are cleared (see semop(2)).

           The child process's values for tms_utime, tms_stime, tms_cutime,
           and tms_cstime are set to zero (see times(2)).

           The time left until an alarm clock signal is reset to 0 (clearing
           any pending alarm), and all interval timers are set to 0

      The vfork(2) system call can be used to fork processes more quickly
      than fork(), but has some restrictions.  See vfork(2) for details.

      If a parent and child process both have a file opened and the parent
      or child closes the file, the file is still open for the other

 RETURN VALUE    [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 errno is set to indicate the error.

      The parent and child processes resume execution immediately after the
      fork() call; they are distinguished by the value returned by fork.

 ERRORS    [Toc]    [Back]
      If fork() fails, errno is set to one of the following values.

 Hewlett-Packard Company            - 2 -   HP-UX 11i Version 2: August 2003

 fork(2)                                                             fork(2)

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

           [EAGAIN]       The system-imposed limit on the total number of
                          processes under execution by a single user would
                          be exceeded.

           [ENOMEM]       There is insufficient swap space and/or physical
                          memory available in which to create the new

 WARNINGS    [Toc]    [Back]
      Standard I/O streams (see stdio(3S)) are duplicated in the child.
      Therefore, if fork is called after a buffered I/O operation without
      first closing or flushing the associated standard I/O stream (see
      fclose(3S)), the buffered input or output might be duplicated.

 DEPENDENCIES    [Toc]    [Back]
    HP Process Resource Manager
      If the optional HP Process Resource Manager (PRM) software is
      installed and configured, the child process inherits the parent's
      process resource group ID.  See prmconfig(1) for a description of how
      to configure HP PRM, and prmconf(4) for the definition of process
      resource group.

 AUTHOR    [Toc]    [Back]
      fork() was developed by AT&T, the University of California, Berkeley,
      and HP.

 SEE ALSO    [Toc]    [Back]
      acct(2), chroot(2), exec(2), exit(2), fcntl(2), getgroups(2),
      lockf(2), nice(2), plock(2), profil(2), pthread_atfork(3T), ptrace(2),
      rtprio(2), semop(2), setpgrp(2), setuid(2), shmop(2), times(2),
      ulimit(2), umask(2), vfork(2), wait(2), fclose(3S), stdio(3S),
      acct(4), signal(5).

      HP Process Resource Manager: prmconfig(1), prmconf(4) in HP Process
      Resource Manager User's Guide.

      fork(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1

 Hewlett-Packard Company            - 3 -   HP-UX 11i Version 2: August 2003
[ 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