 b6cbf7203b
			
		
	
	
		b6cbf7203b
		
	
	
	
	
		
			
			This patch imports the unmodified current version of NetBSD libc. The NetBSD includes are in /nbsd_include, while the libc code itself is split between lib/nbsd_libc and common/lib/libc.
		
			
				
	
	
		
			138 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: vfork.2,v 1.24 2003/08/07 16:44:11 agc Exp $
 | |
| .\"
 | |
| .\" Copyright (c) 1980, 1991, 1993
 | |
| .\"	The Regents of the University of California.  All rights reserved.
 | |
| .\"
 | |
| .\" Redistribution and use in source and binary forms, with or without
 | |
| .\" modification, are permitted provided that the following conditions
 | |
| .\" are met:
 | |
| .\" 1. Redistributions of source code must retain the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer.
 | |
| .\" 2. Redistributions in binary form must reproduce the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer in the
 | |
| .\"    documentation and/or other materials provided with the distribution.
 | |
| .\" 3. Neither the name of the University nor the names of its contributors
 | |
| .\"    may be used to endorse or promote products derived from this software
 | |
| .\"    without specific prior written permission.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | |
| .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | |
| .\" SUCH DAMAGE.
 | |
| .\"
 | |
| .\"     @(#)vfork.2	8.1 (Berkeley) 6/4/93
 | |
| .\"
 | |
| .Dd January 3, 1998
 | |
| .Dt VFORK 2
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm vfork
 | |
| .Nd spawn new process in a virtual memory efficient way
 | |
| .Sh LIBRARY
 | |
| .Lb libc
 | |
| .Sh SYNOPSIS
 | |
| .In unistd.h
 | |
| .Ft pid_t
 | |
| .Fn vfork void
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Nm
 | |
| system call creates a new process that does not have a new
 | |
| virtual address space, but rather shares address space with the
 | |
| parent, thus avoiding potentially expensive copy-on-write operations
 | |
| normally associated with creating a new process.
 | |
| It is useful when the purpose of
 | |
| .Xr fork 2
 | |
| would have been to create a new system context for an
 | |
| .Xr execve 2 .
 | |
| The
 | |
| .Nm
 | |
| system call differs from
 | |
| .Xr fork 2
 | |
| in that the child borrows the parent's memory and thread of
 | |
| control until a call to
 | |
| .Xr execve 2
 | |
| or an exit (either by a call to
 | |
| .Xr _exit 2
 | |
| or abnormally).
 | |
| The parent process is suspended while the child is using its resources.
 | |
| .Pp
 | |
| The
 | |
| .Nm
 | |
| system call returns 0 in the child's context and (later) the pid
 | |
| of the child in the parent's context.
 | |
| .Pp
 | |
| The
 | |
| .Nm
 | |
| system call can normally be used just like
 | |
| .Xr fork 2 .
 | |
| It does not work, however, to return while running in the childs context
 | |
| from the procedure that called
 | |
| .Fn vfork
 | |
| since the eventual return from
 | |
| .Fn vfork
 | |
| would then return to a no longer existent stack frame.
 | |
| Be careful, also, to call
 | |
| .Xr _exit 2
 | |
| rather than
 | |
| .Xr exit 3
 | |
| if you can't
 | |
| .Xr execve 2 ,
 | |
| since
 | |
| .Xr exit 3
 | |
| will flush and close standard I/O channels, and thereby mess up the
 | |
| standard I/O data structures
 | |
| in the parent process.
 | |
| (Even with
 | |
| .Xr fork 2
 | |
| it is wrong to call
 | |
| .Xr exit 3
 | |
| since buffered data would then be flushed twice.)
 | |
| .Sh RETURN VALUES
 | |
| Same as for
 | |
| .Xr fork 2 .
 | |
| .Sh ERRORS
 | |
| Same as for
 | |
| .Xr fork 2 .
 | |
| .Sh SEE ALSO
 | |
| .Xr execve 2 ,
 | |
| .Xr fork 2 ,
 | |
| .Xr sigaction 2 ,
 | |
| .Xr wait 2
 | |
| .Sh HISTORY
 | |
| The
 | |
| .Fn vfork
 | |
| function call appeared in
 | |
| .Bx 3.0 .
 | |
| In
 | |
| .Bx 4.4 ,
 | |
| the semantics were changed to only suspend the parent.
 | |
| The original semantics were reintroduced in
 | |
| .Nx 1.4 .
 | |
| .Sh BUGS
 | |
| .\" XXX We reintroduced the original semantics.
 | |
| .\" This system call will be eliminated when proper system sharing
 | |
| .\" mechanisms are implemented.
 | |
| Users should not depend on the memory sharing semantics of
 | |
| .Fn vfork
 | |
| as other ways of speeding up the fork process may be developed in
 | |
| the future.
 | |
| .Pp
 | |
| To avoid a possible deadlock situation, processes that are children
 | |
| in the middle of a
 | |
| .Fn vfork
 | |
| are never sent
 | |
| .Dv SIGTTOU
 | |
| or
 | |
| .Dv SIGTTIN
 | |
| signals; rather, output or
 | |
| .Xr ioctl 2
 | |
| calls are allowed and input attempts result in an end-of-file indication.
 |