Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
vfork(2)		      System Calls Manual		      vfork(2)

NAME
       vfork - spawn new process; share	virtual	memory

SYNOPSIS
REMARKS
       is  a  higher  performance  version of that is provided on some systems
       where a performance advantage can be attained.

       If the calling process  is  multi-threaded,  the	 newly	created	 child
       process will only contain one thread. This one thread will be a copy of
       the thread calling

       differs	from  only  in	that the child process can share code and data
       with the	calling	process	(parent	process).  This	speeds cloning	activ-
       ity  significantly  at a	risk to	the integrity of the parent process if
       is misused.

       The use of for any purpose except as a prelude to an  immediate	or  is
       not  supported.	 Any  program that relies upon the differences between
       and is not portable across HP-UX	systems.

       All HP-UX implementations must provide the entry	but it is  permissible
       for them	to treat it identically	to On some implementations the two are
       not  distinguished because the implementation is	as efficient as	possi-
       ble.  Other versions may	do the same to avoid the overhead of  support-
       ing two similar calls.

DESCRIPTION
       can  be	used to	create new processes without fully copying the address
       space of	the old	process.  If a forked process is simply	going to do an
       (see exec(2)), the data space copied from the parent to the child by is
       not used.  This is particularly inefficient  in	a  paged  environment,
       making is particularly useful.  Depending upon the size of the parent's
       data space, can give a significant performance improvement over

       differs	from  in that the child	borrows	the parent's memory and	thread
       of control until	a call to or an	exit (either by	a call	to  or	abnor-
       mally (see exec(2) and exit(2)).	 The parent process is suspended while
       the child is using its resources.

       returns	0  in  the child's context and (later) the pid of the child in
       the parent's context.

       can normally be used just like It does not  work,  however,  to	return
       while  running  in  the child's context from the	procedure which	called
       since the eventual return from would then return	to a no	 longer	 exis-
       tent  stack frame.  Be careful, also, to	call rather than if you	cannot
       since flushes and closes	standard I/O channels,	thereby	 damaging  the
       parent  process's standard I/O data structures.	(Even with it is wrong
       to call since buffered data would then be flushed twice.)

       The window begins at the	call and ends when  the	 child	completes  its
       call.

RETURN VALUE
       Upon  successful	 completion, 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, no child process is
       created,	and is set to indicate the error.

ERRORS
       fails  and  no  child process is	created	if any of the following	condi-
       tions are encountered:

	      [EAGAIN]	     The system-wide 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.

DEPENDENCIES
   Series 800
       Process	times for the parent and child processes within	the window may
       be inaccurate.

	      Parent and child processes share the same	stack space within the
	      window.  If the size of the stack	has been changed  within  this
	      window  by the child process (return from	or call	to a function,
	      for example), it is likely that the parent and  child  processes
	      will be killed with signal or

	      In the window, a call to (see signal(2) that installs a catching
	      function	can  affect handling of	the signal by the parent.  The
	      parent is	not affected if	the handling is	being set to or	or  if
	      either or	is used	(see sigaction(2) and sigvector(2)).

AUTHOR
       was developed by	the University of California, Berkeley.

SEE ALSO
       exec(2),	exit(2), fork(2), wait(2).

								      vfork(2)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=vfork&manpath=HP-UX+11.22>

home | help