summaryrefslogtreecommitdiff
path: root/static/netbsd/man2/clone.2
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
commit253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch)
treeadf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man2/clone.2
parenta9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff)
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man2/clone.2')
-rw-r--r--static/netbsd/man2/clone.2202
1 files changed, 202 insertions, 0 deletions
diff --git a/static/netbsd/man2/clone.2 b/static/netbsd/man2/clone.2
new file mode 100644
index 00000000..8dae6eb9
--- /dev/null
+++ b/static/netbsd/man2/clone.2
@@ -0,0 +1,202 @@
+.\" $NetBSD: clone.2,v 1.15 2022/08/01 14:22:32 wiz Exp $
+.\"
+.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Jason R. Thorpe.
+.\"
+.\" 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.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+.\"
+.Dd August 1, 2022
+.Dt CLONE 2
+.Os
+.Sh NAME
+.Nm clone ,
+.Nm __clone
+.Nd spawn new process with options
+.Sh LIBRARY
+.Lb libc
+.Sh SYNOPSIS
+.Fd #define _GNU_SOURCE
+.In sched.h
+.Ft pid_t
+.Fn clone "int (*func)(void *arg)" "void *stack" "int flags" "void *arg"
+.Ft pid_t
+.Fn __clone "int (*func)(void *arg)" "void *stack" "int flags" "void *arg"
+.Sh DESCRIPTION
+The
+.Nm
+system call (and associated library support code) creates a new process
+in a way that allows the caller to specify several options for the new
+process creation.
+.Pp
+Unlike
+.Xr fork 2
+or
+.Xr vfork 2 ,
+in which the child process returns to the call site,
+.Nm
+causes the child process to begin execution at the function specified
+by
+.Ar func .
+The argument
+.Ar arg
+is passed to the entry point, as a means for the parent to provide
+context to the child.
+The stack pointer for the child process will be set to
+.Ar stack .
+Note that the
+.Nm
+interface requires that the application know the stack direction
+for the architecture, and that the caller initialize the
+.Ar stack
+argument as appropriate for the stack direction.
+.Pp
+The
+.Ar flags
+argument specifies several options that control how the child process
+is created.
+The lower 8 bits of
+.Ar flags
+specify the signal that is to be sent to the parent when the child
+exits.
+The following flags may also be specified by bitwise-or'ing
+them with the signal value:
+.Bl -tag -width "CLONE_SIGHAND" -offset 2n
+.It Dv CLONE_VM
+Share the virtual address space with the parent.
+The address space is shared in the same way as
+.Xr vfork 2 .
+.It Dv CLONE_FS
+Share the
+.Dq file system information
+with the parent.
+This include the current working directory and file creation mask.
+.It Dv CLONE_FILES
+Share the file descriptor table with the parent.
+.It Dv CLONE_SIGHAND
+Share the signal handler set with the parent.
+Note that the signal mask
+is never shared between the parent and the child, even if
+.Dv CLONE_SIGHAND
+is set.
+.It Dv CLONE_VFORK
+Preserve the synchronization semantics of
+.Xr vfork 2 ;
+the parent blocks until the child exits.
+.El
+.Pp
+The
+.Nm
+call returns the pid of the child in the parent's context.
+The child is provided no return value, since it begins execution at
+a different address.
+.Pp
+If the child process's entry point returns, the value it returns
+is passed to
+.Xr _exit 2 ,
+and the child process exits.
+Note that if the child process wants to exit directly, it should use
+.Xr _exit 2 ,
+and not
+.Xr exit 3 ,
+since
+.Xr exit 3
+will flush and close standard I/O channels, and thereby corrupt the
+parent process's standard I/O data structures (even with
+.Xr fork 2
+it is wrong to call
+.Xr exit 3
+since buffered data would then be flushed twice).
+.Pp
+Note that
+.Nm
+is not intended to be used for new native
+.Nx
+applications.
+It is provided as a means to port software
+originally written for the Linux operating system to
+.Nx .
+.Sh RETURN VALUES
+Same as for
+.Xr fork 2 .
+.Sh ERRORS
+Same as for
+.Xr fork 2 .
+.Sh SEE ALSO
+.Xr chdir 2 ,
+.Xr chroot 2 ,
+.Xr fork 2 ,
+.Xr sigaction 2 ,
+.Xr sigprocmask 2 ,
+.Xr umask 2 ,
+.Xr vfork 2 ,
+.Xr wait 2
+.Sh HISTORY
+The
+.Fn clone
+function call appeared in
+.Nx 1.6 .
+It is compatible with the Linux function call of the same name
+with respect to the described options.
+.Sh BUGS
+The
+.Nx
+implementation of
+.Fn clone
+does not implement the following
+.Ar flags
+that are present in the Linux implementation:
+.Pp
+.Bl -bullet -offset indent -compact
+.It
+.Dv CLONE_CHILD_CLEARTID
+.It
+.Dv CLONE_CHILD_SETTID
+.It
+.Dv CLONE_IO
+.It
+.Dv CLONE_NEWIPC
+.It
+.Dv CLONE_NEWNET
+.It
+.Dv CLONE_NEWNS
+.It
+.Dv CLONE_NEWPID
+.It
+.Dv CLONE_NEWUTS
+.It
+.Dv CLONE_PARENT
+.It
+.Dv CLONE_PARENT_SETTID
+.It
+.Dv CLONE_PTRACE
+.It
+.Dv CLONE_SETTLS
+.It
+.Dv CLONE_SYSVSEM
+.It
+.Dv CLONE_THREAD
+.It
+.Dv CLONE_UNTRACED
+.El