fork1 man page on MirBSD

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

FORK1(9)		      BSD Kernel Manual			      FORK1(9)

NAME
     fork1 - create a new process

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

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

DESCRIPTION
     fork1() creates a new process out of p1, which should be the current pro-
     cess. This function is used primarily to implement the fork(2), rfork(2),
     vfork(2) system calls, as well as the kthread_create(9) function.

     The flags argument is used to control the behavior of the fork and is
     created by a bitwise-OR of the following values:

     FORK_FORK	      The call is done by the fork(2) system call. Used only
		      for statistics.

     FORK_VFORK	      The call is done by the vfork(2) system call. Used only
		      for statistics.

     FORK_RFORK	      The call is done by the rfork(2) system call. Used only
		      for statistics.

     FORK_PPWAIT      Suspend the parent process until the child is terminated
		      (by calling _exit(2) or abnormally), or makes a call to
		      execve(2).

     FORK_SHAREFILES  Let the child share the file descriptor table with the
		      parent through fdshare(9). The default behavior is to
		      copy the table through fdcopy(9).

     FORK_CLEANFILES  The child starts with a clean file descriptor table
		      created by fdinit(9).

     FORK_NOZOMBIE    The child will be dissociated from the parent and will
		      not leave a status for the parent to collect. See
		      wait(2).

     FORK_SHAREVM     The child will share the parent's address space. The de-
		      fault behavior is that the child gets a copy-on-write
		      copy of the address space.

     If stack is not NULL, the area starting at stack of extent stacksize will
     be used for the child's stack, instead of cloning the parent's stack.

     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.

     The signal exitsig is sent to the parent p1 on exit of the new process.

     If func is not NULL, the new process will begin execution by calling this
     function. It defaults to child_return, which returns to userland.

     If arg is not NULL, it is the argument to the previous function. It de-
     faults to a pointer to the new process.

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

     [EAGAIN]  The limit on the total number of system processes would be ex-
	       ceeded.

     [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), rfork(2), vfork(2), kthread_create(9), pfind(9),
     psignal(9), uvm_fork(9)

CAVEATS
     The fork1 function semantics are specific to OpenBSD. Other BSD systems
     have different semantics.

     The system never uses fork1() with a non-null stack, so that feature is
     not even tested.

MirOS BSD #10-current	       January 6, 1998				     1
[top]

List of man pages available for MirBSD

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