]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/man/man2/vfork.2
xnu-4903.270.47.tar.gz
[apple/xnu.git] / bsd / man / man2 / vfork.2
index 06e201dfcf29fca763fd1871bab839fcaf4112f9..3a07e996593661a573791757a5825dd854b9aad7 100644 (file)
 .Sh SYNOPSIS
 .Fd #include <unistd.h>
 .Ft pid_t
 .Sh SYNOPSIS
 .Fd #include <unistd.h>
 .Ft pid_t
-.Fn vfork void
+.Fo vfork
+.Fa void
+.Fc
 .Sh DESCRIPTION
 .Sh DESCRIPTION
-.Fn Vfork
+.Fn vfork
 can be used to create new processes without fully copying the address
 space of the old process, which is horrendously inefficient in a paged
 environment.  It is useful when the purpose of
 .Xr fork 2
 would have been to create a new system context for an
 .Xr execve .
 can be used to create new processes without fully copying the address
 space of the old process, which is horrendously inefficient in a paged
 environment.  It is useful when the purpose of
 .Xr fork 2
 would have been to create a new system context for an
 .Xr execve .
-.Fn Vfork
+.Fn vfork
 differs from
 .Xr fork
 in that the child borrows the parent's memory and thread of
 differs from
 .Xr fork
 in that the child borrows the parent's memory and thread of
@@ -62,11 +64,11 @@ or an exit (either by a call to
 or abnormally.)
 The parent process is suspended while the child is using its resources.
 .Pp
 or abnormally.)
 The parent process is suspended while the child is using its resources.
 .Pp
-.Fn Vfork
+.Fn vfork
 returns 0 in the child's context and (later) the pid of the child in
 the parent's context.
 .Pp
 returns 0 in the child's context and (later) the pid of the child in
 the parent's context.
 .Pp
-.Fn Vfork
+.Fn vfork
 can normally be used just like
 .Xr fork .
 It does not work, however, to return while running in the childs context
 can normally be used just like
 .Xr fork .
 It does not work, however, to return while running in the childs context
@@ -91,13 +93,30 @@ it is wrong to call
 .Xr exit
 since buffered data would then be flushed twice.)
 .Sh SEE ALSO
 .Xr exit
 since buffered data would then be flushed twice.)
 .Sh SEE ALSO
-.Xr fork 2 ,
 .Xr execve 2 ,
 .Xr execve 2 ,
+.Xr fork 2 ,
 .Xr sigaction 2 ,
 .Xr sigaction 2 ,
-.Xr wait 2 ,
-.Sh DIAGNOSTICS
-Same as for
-.Xr fork .
+.Xr wait 2 
+.Sh ERRORS
+The
+.Fn vfork
+system call will fail for any of the reasons described
+in the
+.Xr fork
+man page.
+In addition, it will fail if:
+.Bl -tag -width Er
+.\" ===========
+.It Bq Er EINVAL
+A system call other than
+.Xr _exit()
+or
+.Xr execve()
+(or libc functions that make no system calls other than those)
+is called following calling a
+.Fn vfork
+call.
+.El
 .Sh BUGS
 This system call will be eliminated when proper system sharing
 mechanisms are implemented. 
 .Sh BUGS
 This system call will be eliminated when proper system sharing
 mechanisms are implemented.