создать дочерний процесс (create a child process)
Ошибки (Error)
EAGAIN Too many processes are already running; see fork(2).
EBUSY (clone3() only)
CLONE_INTO_CGROUP was specified in cl_args.flags, but the
file descriptor specified in cl_args.cgroup refers to a
version 2 cgroup in which a domain controller is enabled.
EEXIST (clone3() only)
One (or more) of the PIDs specified in set_tid already
exists in the corresponding PID namespace.
EINVAL Both CLONE_SIGHAND and CLONE_CLEAR_SIGHAND were specified
in the flags mask.
EINVAL CLONE_SIGHAND was specified in the flags mask, but
CLONE_VM was not. (Since Linux 2.6.0.)
EINVAL CLONE_THREAD was specified in the flags mask, but
CLONE_SIGHAND was not. (Since Linux 2.5.35.)
EINVAL CLONE_THREAD was specified in the flags mask, but the
current process previously called unshare(2) with the
CLONE_NEWPID flag or used setns(2) to reassociate itself
with a PID namespace.
EINVAL Both CLONE_FS and CLONE_NEWNS were specified in the flags
mask.
EINVAL (since Linux 3.9)
Both CLONE_NEWUSER and CLONE_FS were specified in the
flags mask.
EINVAL Both CLONE_NEWIPC and CLONE_SYSVSEM were specified in the
flags mask.
EINVAL One (or both) of CLONE_NEWPID or CLONE_NEWUSER and one (or
both) of CLONE_THREAD or CLONE_PARENT were specified in
the flags mask.
EINVAL (since Linux 2.6.32)
CLONE_PARENT was specified, and the caller is an init
process.
EINVAL Returned by the glibc clone() wrapper function when fn or
stack is specified as NULL.
EINVAL CLONE_NEWIPC was specified in the flags mask, but the
kernel was not configured with the CONFIG_SYSVIPC and
CONFIG_IPC_NS options.
EINVAL CLONE_NEWNET was specified in the flags mask, but the
kernel was not configured with the CONFIG_NET_NS option.
EINVAL CLONE_NEWPID was specified in the flags mask, but the
kernel was not configured with the CONFIG_PID_NS option.
EINVAL CLONE_NEWUSER was specified in the flags mask, but the
kernel was not configured with the CONFIG_USER_NS option.
EINVAL CLONE_NEWUTS was specified in the flags mask, but the
kernel was not configured with the CONFIG_UTS_NS option.
EINVAL stack is not aligned to a suitable boundary for this
architecture. For example, on aarch64, stack must be a
multiple of 16.
EINVAL (clone3() only)
CLONE_DETACHED was specified in the flags mask.
EINVAL (clone() only)
CLONE_PIDFD was specified together with CLONE_DETACHED in
the flags mask.
EINVAL CLONE_PIDFD was specified together with CLONE_THREAD in
the flags mask.
EINVAL (clone() only)
CLONE_PIDFD was specified together with
CLONE_PARENT_SETTID in the flags mask.
EINVAL (clone3() only)
set_tid_size is greater than the number of nested PID
namespaces.
EINVAL (clone3() only)
One of the PIDs specified in set_tid was an invalid.
EINVAL (AArch64 only, Linux 4.6 and earlier)
stack was not aligned to a 128-bit boundary.
ENOMEM Cannot allocate sufficient memory to allocate a task
structure for the child, or to copy those parts of the
caller's context that need to be copied.
ENOSPC (since Linux 3.7)
CLONE_NEWPID was specified in the flags mask, but the
limit on the nesting depth of PID namespaces would have
been exceeded; see pid_namespaces(7).
ENOSPC (since Linux 4.9; beforehand EUSERS)
CLONE_NEWUSER was specified in the flags mask, and the
call would cause the limit on the number of nested user
namespaces to be exceeded. See user_namespaces(7).
From Linux 3.11 to Linux 4.8, the error diagnosed in this
case was EUSERS.
ENOSPC (since Linux 4.9)
One of the values in the flags mask specified the creation
of a new user namespace, but doing so would have caused
the limit defined by the corresponding file in
/proc/sys/user to be exceeded. For further details, see
namespaces(7).
EOPNOTSUPP (clone3() only)
CLONE_INTO_CGROUP was specified in cl_args.flags, but the
file descriptor specified in cl_args.cgroup refers to a
version 2 cgroup that is in the domain invalid state.
EPERM CLONE_NEWCGROUP, CLONE_NEWIPC, CLONE_NEWNET, CLONE_NEWNS,
CLONE_NEWPID, or CLONE_NEWUTS was specified by an
unprivileged process (process without CAP_SYS_ADMIN).
EPERM CLONE_PID was specified by a process other than process 0.
(This error occurs only on Linux 2.5.15 and earlier.)
EPERM CLONE_NEWUSER was specified in the flags mask, but either
the effective user ID or the effective group ID of the
caller does not have a mapping in the parent namespace
(see user_namespaces(7)).
EPERM (since Linux 3.9)
CLONE_NEWUSER was specified in the flags mask and the
caller is in a chroot environment (i.e., the caller's root
directory does not match the root directory of the mount
namespace in which it resides).
EPERM (clone3() only)
set_tid_size was greater than zero, and the caller lacks
the CAP_SYS_ADMIN capability in one or more of the user
namespaces that own the corresponding PID namespaces.
ERESTARTNOINTR (since Linux 2.6.17)
System call was interrupted by a signal and will be
restarted. (This can be seen only during a trace.)
EUSERS (Linux 3.11 to Linux 4.8)
CLONE_NEWUSER was specified in the flags mask, and the
limit on the number of nested user namespaces would be
exceeded. See the discussion of the ENOSPC error above.