fork1 man page on NetBSD

Man page or keyword search:  
man Server   9087 pages
apropos Keyword Search (all sections)
Output format
NetBSD logo
[printable version]

FORK1(9)		 BSD Kernel Developer's Manual		      FORK1(9)

NAME
     fork1 — create a new process

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

     int
     fork1(struct lwp *l1, int flags, int exitsig, void *stack,
	 size_t stacksize, void (*func)(void *), void *arg,
	 register_t *retval, struct proc **rnewprocp);

DESCRIPTION
     fork1() creates a new process out of the process behind l1, which is
     assumed to be the current lwp.  This function is used primarily to imple‐
     ment the fork(2) and vfork(2) system calls, but is versatile enough to be
     used as a backend for e.g. the __clone(2) call.

     The flags argument controls the semantics of the fork operation, and is
     made up of the bitwise-OR of the following values:

     FORK_PPWAIT      The parent process will sleep until the child process
		      successfully calls execve(2) or exits (either by a call
		      to _exit(2) or abnormally).

     FORK_SHAREVM     The child process will share the parent's virtual
		      address space.  If this flag is not specified, the child
		      will get a copy-on-write snapshot of the parent's
		      address space.

     FORK_SHARECWD    The child process will share the parent's current direc‐
		      tory, root directory, and file creation mask.

     FORK_SHAREFILES  The child process will share the parent's file descrip‐
		      tors.

     FORK_SHARESIGS   The child process will share the parent's signal
		      actions.

     FORK_NOWAIT      The child process will at creation time be inherited by
		      the init process.

     FORK_CLEANFILES  The child process will not copy or share the parent's
		      descriptors, but rather will start out with a clean set.

     A flags value of 0 indicates a standard fork operation.

     The exitsig argument controls the signal sent to the parent on child
     death.  If normal operation desired, SIGCHLD should be supplied.

     It is possible to specify the child userspace stack location and size by
     using the stack and stacksize arguments, respectively.  Values NULL and
     0, respectively, will give the child the default values for the machine
     architecture in question.

     The arguments func and arg can be used to specify a kernel function to be
     called when the child process returns instead of child_return().  These
     are used for example in starting the init process and creating kernel
     threads.

     The retval argument is provided for the use of system call stubs.	If
     retval is not NULL, it will hold the following values after successful
     completion of the fork operation:

     retval[0]	This will contain the pid of the child process.

     retval[1]	In the parent process, this will contain the value 0.  In the
		child process, this will contain 1.

     User level system call stubs typically subtract 1 from retval[1] and bit‐
     wise-AND it with retval[0], thus returning the pid to the parent process
     and 0 to the child.

     If rnewprocp is not NULL, *rnewprocp will point to the newly created
     process upon successful completion of the fork operation.

RETURN VALUES
     Upon successful completion of the fork operation, fork1() returns 0.
     Otherwise, the following error values are returned:

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

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

SEE ALSO
     execve(2), fork(2), vfork(2)

BSD				January 4, 2008				   BSD
[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server NetBSD

List of man pages available for NetBSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net