summaryrefslogtreecommitdiff
path: root/static/openbsd/man2/intro.2
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:54:44 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:54:44 -0400
commita9157ce950dfe2fc30795d43b9d79b9d1bffc48b (patch)
tree9df484304b560466d145e662c1c254ff0e9ae0ba /static/openbsd/man2/intro.2
parent160aa82b2d39c46ad33723d7d909cb4972efbb03 (diff)
docs: Added All OpenBSD Manuals
Diffstat (limited to 'static/openbsd/man2/intro.2')
-rw-r--r--static/openbsd/man2/intro.2793
1 files changed, 793 insertions, 0 deletions
diff --git a/static/openbsd/man2/intro.2 b/static/openbsd/man2/intro.2
new file mode 100644
index 00000000..5483d8fb
--- /dev/null
+++ b/static/openbsd/man2/intro.2
@@ -0,0 +1,793 @@
+.\" $OpenBSD: intro.2,v 1.79 2025/07/18 17:19:45 schwarze Exp $
+.\" $NetBSD: intro.2,v 1.6 1995/02/27 12:33:41 cgd Exp $
+.\"
+.\" Copyright (c) 1980, 1983, 1986, 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.
+.\"
+.\" @(#)intro.2 8.3 (Berkeley) 12/11/93
+.\"
+.Dd $Mdocdate: July 18 2025 $
+.Dt INTRO 2
+.Os
+.Sh NAME
+.Nm intro ,
+.Nm errno
+.Nd introduction to system calls and error numbers
+.Sh SYNOPSIS
+.In errno.h
+.Sh DESCRIPTION
+The manual pages in section 2 provide an overview of the system calls,
+their error returns, and other common definitions and concepts.
+.Pp
+Programs may be restricted to a subset of system calls with
+.Xr pledge 2 .
+.\".Pp
+.\".Sy System call restart
+.\".Pp
+.\"<more later...>
+.Sh DIAGNOSTICS
+Nearly all of the system calls provide an error number via the identifier
+.Va errno ,
+which expands to an addressable location of type
+.Vt int .
+The address of
+.Va errno
+in each thread is guaranteed to be unique for the lifetime of the thread.
+Applications must use
+.Va errno
+as defined in
+.In errno.h
+and not attempt to use a custom definition.
+.Pp
+When a system call detects an error, it returns an integer value
+indicating failure (usually \-1) and sets the variable
+.Va errno
+accordingly.
+(This allows interpretation of the failure on receiving
+a \-1 and to take action accordingly.)
+Successful calls never set
+.Va errno ;
+once set, it remains until another error occurs.
+It should only be examined after an error.
+Note that a number of system calls overload the meanings of these
+error numbers, and that the meanings must be interpreted according
+to the type and circumstances of the call.
+.Pp
+The following is a complete list of the errors and their
+names as given in
+.In sys/errno.h .
+.Bl -hang -width Ds
+.It Er 0 Em "Undefined error: 0" .
+Not used.
+.It Er 1 EPERM Em "Operation not permitted" .
+An attempt was made to perform an operation limited to processes
+with appropriate privileges or to the owner of a file or other
+resources.
+.It Er 2 ENOENT Em "\&No such file or directory" .
+A component of a specified pathname did not exist, or the
+pathname was an empty string.
+.It Er 3 ESRCH Em "\&No such process" .
+No process could be found which corresponds to the given process ID.
+.It Er 4 EINTR Em "Interrupted system call" .
+An asynchronous signal (such as
+.Dv SIGINT
+or
+.Dv SIGQUIT )
+was caught by the thread during the execution of an interruptible
+function.
+If the signal handler performs a normal return, the
+interrupted function call will seem to have returned the error condition.
+.It Er 5 EIO Em "Input/output error" .
+Some physical input or output error occurred.
+This error will not be reported until a subsequent operation on the same file
+descriptor and may be lost (overwritten) by any subsequent errors.
+.It Er 6 ENXIO Em "Device not configured" .
+Input or output on a special file referred to a device that did not
+exist, or made a request beyond the limits of the device.
+This error may also occur when, for example, a tape drive is not online or
+no disk pack is loaded on a drive.
+.It Er 7 E2BIG Em "Argument list too long" .
+The number of bytes used for the argument and environment
+list of the new process exceeded the limit
+.Dv ARG_MAX .
+.It Er 8 ENOEXEC Em "Exec format error" .
+A request was made to execute a file that, although it has the appropriate
+permissions, was not in the format required for an executable file.
+.It Er 9 EBADF Em "Bad file descriptor" .
+A file descriptor argument was out of range, referred to no open file,
+or a read (write) request was made to a file that was only open for
+writing (reading).
+.It Er 10 ECHILD Em "\&No child processes" .
+A
+.Xr wait 2 ,
+.Xr waitid 2 ,
+or
+.Xr waitpid 2
+function was executed by a process that had no existing or unwaited-for
+child processes.
+.It Er 11 EDEADLK Em "Resource deadlock avoided" .
+An attempt was made to lock a system resource that
+would have resulted in a deadlock situation.
+.It Er 12 ENOMEM Em "Cannot allocate memory" .
+The new process image required more memory than was allowed by the hardware
+or by system-imposed memory management constraints.
+A lack of swap space is normally temporary; however, a lack of core is not.
+Soft limits may be increased to their corresponding hard limits.
+.It Er 13 EACCES Em "Permission denied" .
+An attempt was made to access a file in a way forbidden
+by its file access permissions.
+.It Er 14 EFAULT Em "Bad address" .
+The system detected an invalid address in attempting to
+use an argument of a call.
+.It Er 15 ENOTBLK Em "Block device required" .
+A block device operation was attempted on a non-block device or file.
+.It Er 16 EBUSY Em "Device busy" .
+An attempt to use a system resource which was in use at the time
+in a manner which would have conflicted with the request.
+.It Er 17 EEXIST Em "File exists" .
+An existing file was mentioned in an inappropriate context,
+for instance, as the new link name in a
+.Xr link 2
+function.
+.It Er 18 EXDEV Em "Cross-device link" .
+A hard link to a file on another file system was attempted.
+.It Er 19 ENODEV Em "Operation not supported by device" .
+An attempt was made to apply an inappropriate function to a device,
+for example, trying to read a write-only device such as a printer.
+.It Er 20 ENOTDIR Em "Not a directory" .
+A file descriptor or a component of the specified pathname existed, but it was
+not a directory, when a directory was expected.
+.It Er 21 EISDIR Em "Is a directory" .
+An attempt was made to open a directory with write mode specified.
+.It Er 22 EINVAL Em "Invalid argument" .
+Some invalid argument was supplied.
+(For example, specifying an undefined signal to a
+.Xr signal 3
+or
+.Xr kill 2
+function).
+.It Er 23 ENFILE Em "Too many open files in system" .
+Maximum number of file descriptors allowable on the system
+has been reached and a request for an open cannot be satisfied
+until at least one has been closed.
+The
+.Xr sysctl 2
+variable
+.Va kern.maxfiles
+contains the current limit.
+.It Er 24 EMFILE Em "Too many open files" .
+The maximum number of file descriptors allowable for this process
+has been reached and a request for an open cannot be satisfied
+until at least one has been closed.
+.Xr getdtablesize 3
+will obtain the current limit.
+.It Er 25 ENOTTY Em "Inappropriate ioctl for device" .
+A control function (see
+.Xr ioctl 2 )
+was attempted for a file or
+special device for which the operation was inappropriate.
+.It Er 26 ETXTBSY Em "Text file busy" .
+An attempt was made either to execute a pure procedure (shared text)
+file which was open for writing by another process,
+or to open with write access a pure procedure file that is currently
+being executed.
+.It Er 27 EFBIG Em "File too large" .
+The size of a file exceeded the maximum.
+(The system-wide maximum file size is 2**63 bytes.
+Each file system may impose a lower limit for files contained within it.)
+.It Er 28 ENOSPC Em "\&No space left on device" .
+A
+.Xr write 2
+to an ordinary file, the creation of a directory or symbolic link,
+or the creation of a directory entry failed because no more disk
+blocks were available on the file system, or the allocation of an
+inode for a newly created file failed because no more inodes were
+available on the file system.
+.It Er 29 ESPIPE Em "Illegal seek" .
+An
+.Xr lseek 2
+function was issued on a socket, pipe or FIFO.
+.It Er 30 EROFS Em "Read-only file system" .
+An attempt was made to modify a file or create a directory
+on a file system that was read-only at the time.
+.It Er 31 EMLINK Em "Too many links" .
+The maximum allowable number of hard links to a single file has been
+exceeded (see
+.Xr pathconf 2
+for how to obtain this value).
+.It Er 32 EPIPE Em "Broken pipe" .
+A write on a pipe, socket or FIFO
+for which there is no process to read the data.
+.It Er 33 EDOM Em "Numerical argument out of domain" .
+A numerical input argument was outside the defined domain of
+the mathematical function.
+.It Er 34 ERANGE Em "Result too large" .
+A result of the function was too large to fit in the
+available space (perhaps exceeded precision).
+.It Er 35 EAGAIN No = Er EWOULDBLOCK Em "Resource temporarily unavailable" .
+This is a temporary condition and later calls to the
+same routine may complete normally.
+.It Er 36 EINPROGRESS Em "Operation now in progress" .
+An operation that takes a long time to complete (such as a
+.Xr connect 2 )
+was attempted on a non-blocking object (see
+.Xr fcntl 2 ) .
+.It Er 37 EALREADY Em "Operation already in progress" .
+An operation was attempted on a non-blocking object that already
+had an operation in progress.
+.It Er 38 ENOTSOCK Em "Socket operation on non-socket" .
+Self-explanatory.
+.It Er 39 EDESTADDRREQ Em "Destination address required" .
+A required address was omitted from an operation on a socket.
+.It Er 40 EMSGSIZE Em "Message too long" .
+A message sent on a socket was larger than the internal message buffer
+or some other network limit.
+.It Er 41 EPROTOTYPE Em "Protocol wrong type for socket" .
+A protocol was specified that does not support the semantics of the
+socket type requested.
+For example, you cannot use the Internet UDP protocol with type
+.Dv SOCK_STREAM .
+.It Er 42 ENOPROTOOPT Em "Protocol not available" .
+A bad option or level was specified in a
+.Xr getsockopt 2
+or
+.Xr setsockopt 2
+call.
+.It Er 43 EPROTONOSUPPORT Em "Protocol not supported" .
+The protocol has not been configured into the
+system or no implementation for it exists.
+.It Er 44 ESOCKTNOSUPPORT Em "Socket type not supported" .
+The support for the socket type has not been configured into the
+system or no implementation for it exists.
+.It Er 45 EOPNOTSUPP Em "Operation not supported" .
+The attempted operation is not supported for the type of object referenced.
+Usually this occurs when a file descriptor refers to a file or socket
+that cannot support this operation, for example, trying to
+.Em accept
+a connection on a datagram socket.
+.It Er 46 EPFNOSUPPORT Em "Protocol family not supported" .
+The protocol family has not been configured into the
+system or no implementation for it exists.
+.It Er 47 EAFNOSUPPORT Em "Address family not supported by protocol family" .
+An address incompatible with the requested protocol was used.
+For example, you shouldn't necessarily expect to be able to use
+NS addresses with Internet protocols.
+.It Er 48 EADDRINUSE Em "Address already in use" .
+Only one usage of each address is normally permitted.
+.It Er 49 EADDRNOTAVAIL Em "Can't assign requested address" .
+Normally results from an attempt to create a socket with an
+address not on this machine.
+.It Er 50 ENETDOWN Em "Network is down" .
+A socket operation encountered a dead network.
+.It Er 51 ENETUNREACH Em "Network is unreachable" .
+A socket operation was attempted to an unreachable network.
+.It Er 52 ENETRESET Em "Network dropped connection on reset" .
+The host you were connected to crashed and rebooted.
+.It Er 53 ECONNABORTED Em "Software caused connection abort" .
+A connection abort was caused internal to your host machine.
+.It Er 54 ECONNRESET Em "Connection reset by peer" .
+A connection was forcibly closed by a peer.
+This normally results from a loss of the connection on the remote socket
+due to a timeout or a reboot.
+.It Er 55 ENOBUFS Em "\&No buffer space available" .
+An operation on a socket or pipe was not performed because
+the system lacked sufficient buffer space or because a queue was full.
+.It Er 56 EISCONN Em "Socket is already connected" .
+A
+.Xr connect 2
+request was made on an already connected socket; or, a
+.Xr sendto 2
+or
+.Xr sendmsg 2
+request on a connected socket specified a destination
+when already connected.
+.It Er 57 ENOTCONN Em "Socket is not connected" .
+A request to send or receive data was disallowed because
+the socket was not connected and (when sending on a datagram socket)
+no address was supplied.
+.It Er 58 ESHUTDOWN Em "Can't send after socket shutdown" .
+A request to send data was disallowed because the socket
+had already been shut down with a previous
+.Xr shutdown 2
+call.
+.It Er 59 ETOOMANYREFS Em "Too many references: can't splice" .
+Not used in
+.Ox .
+.It Er 60 ETIMEDOUT Em "Operation timed out" .
+A
+.Xr connect 2
+or
+.Xr send 2
+request failed because the connected party did not
+properly respond after a period of time.
+(The timeout period is dependent on the communication protocol.)
+.It Er 61 ECONNREFUSED Em "Connection refused" .
+No connection could be made because the target machine actively
+refused it.
+This usually results from trying to connect to a service that is
+inactive on the foreign host.
+.It Er 62 ELOOP Em "Too many levels of symbolic links" .
+A pathname lookup involved more than 32
+.Pq Dv SYMLOOP_MAX
+symbolic links.
+.It Er 63 ENAMETOOLONG Em "File name too long" .
+A component of a pathname exceeded 255
+.Pq Dv NAME_MAX
+characters, or an entire pathname (including the terminating NUL)
+exceeded 1024
+.Pq Dv PATH_MAX
+bytes.
+.It Er 64 EHOSTDOWN Em "Host is down" .
+A socket operation failed because the destination host was down.
+.It Er 65 EHOSTUNREACH Em "\&No route to host" .
+A socket operation was attempted to an unreachable host.
+.It Er 66 ENOTEMPTY Em "Directory not empty" .
+A directory with entries other than
+.Ql \&.
+and
+.Ql \&..
+was supplied to a remove directory or rename call.
+.It Er 67 EPROCLIM Em "Too many processes" .
+Not used in
+.Ox .
+.It Er 68 EUSERS Em "Too many users" .
+The quota system ran out of table entries.
+.It Er 69 EDQUOT Em "Disk quota exceeded" .
+A
+.Xr write 2
+to an ordinary file, the creation of a directory or symbolic link,
+or the creation of a directory entry failed because the user's quota
+of disk blocks was exhausted, or the allocation of an inode for a newly
+created file failed because the user's quota of inodes was exhausted.
+.It Er 70 ESTALE Em "Stale NFS file handle" .
+An attempt was made to access an open file on an NFS filesystem which
+is now unavailable as referenced by the file descriptor.
+This may indicate the file was deleted on the NFS server or some other
+catastrophic event occurred.
+.It Er 71 EREMOTE Em "Too many levels of remote in path" .
+Not used in
+.Ox .
+.It Er 72 EBADRPC Em "RPC struct is bad" .
+Exchange of
+.Xr rpc 3
+information was unsuccessful.
+.It Er 73 ERPCMISMATCH Em "RPC version wrong" .
+The version of
+.Xr rpc 3
+on the remote peer is not compatible with the local version.
+.It Er 74 EPROGUNAVAIL Em "RPC program not available" .
+The requested
+.Xr rpc 3
+program is not registered on the remote host.
+.It Er 75 EPROGMISMATCH Em "Program version wrong" .
+The requested version of the
+.Xr rpc 3
+program is not available on the remote host.
+.It Er 76 EPROCUNAVAIL Em "Bad procedure for program" .
+An
+.Xr rpc 3
+call was attempted for a procedure which doesn't exist
+in the remote program.
+.It Er 77 ENOLCK Em "\&No locks available" .
+A system-imposed limit on the number of simultaneous file
+locks was reached.
+.It Er 78 ENOSYS Em "Function not implemented" .
+Attempted a system call that is not available on this
+system.
+.It Er 79 EFTYPE Em "Inappropriate file type or format" .
+The file contains invalid data or set to invalid modes.
+.It Er 80 EAUTH Em "Authentication error" .
+Attempted to use an invalid authentication ticket to mount a
+NFS filesystem.
+.It Er 81 ENEEDAUTH Em "Need authenticator" .
+An authentication ticket must be obtained before the given
+NFS filesystem may be mounted.
+.It Er 82 EIPSEC Em "IPsec processing failure" .
+IPsec subsystem error.
+Not used in
+.Ox .
+.It Er 83 ENOATTR Em "Attribute not found" .
+A UFS Extended Attribute is not found for the specified pathname.
+.It Er 84 EILSEQ Em "Illegal byte sequence" .
+An illegal sequence of bytes was used when using wide characters.
+.It Er 85 ENOMEDIUM Em "\&No medium found" .
+Attempted to use a removable media device with no medium present.
+.It Er 86 EMEDIUMTYPE Em "Wrong medium type" .
+Attempted to use a removable media device with incorrect or incompatible
+medium.
+.It Er 87 EOVERFLOW Em "Value too large to be stored in data type" .
+A numerical result of the function was too large to be stored in the
+caller provided space.
+.It Er 88 ECANCELED Em "Operation canceled" .
+The requested operation was canceled.
+.It Er 89 EIDRM Em "Identifier removed" .
+An IPC identifier was removed while the current thread was waiting on it.
+.It Er 90 ENOMSG Em "\&No message of desired type".
+An IPC message queue does not contain a message of the desired type,
+or a message catalog does not contain the requested message.
+.It Er 91 ENOTSUP Em "Not supported" .
+The operation has requested an unsupported value.
+.It Er 92 EBADMSG Em "Bad message" .
+A corrupted message was detected.
+.It Er 93 ENOTRECOVERABLE Em "State not recoverable" .
+The state protected by a robust mutex is not recoverable.
+.It Er 94 EOWNERDEAD Em "Previous owner died" .
+The owner of a robust mutex terminated while holding the mutex lock.
+.It Er 95 EPROTO Em "Protocol error" .
+A device-specific protocol error occurred.
+.El
+.Sh DEFINITIONS
+.Bl -tag -width Ds
+.It Process
+A process is a collection of one or more threads,
+plus the resources shared by those threads such as process ID,
+address space,
+user IDs and group IDs,
+and root directory and current working directory.
+.It Process ID
+Each active process in the system is uniquely identified by a non-negative
+integer called a process ID.
+The range of this ID is from 0 to 99999.
+.It Parent Process ID
+A new process is created by a currently active process; (see
+.Xr fork 2 ) .
+The parent process ID of a process is initially the process ID of its creator.
+If the creating process exits,
+the parent process ID of each child is set to the ID of a system process,
+.Xr init 8 .
+.It Process Group
+Each active process is a member of a process group that is identified by
+a non-negative integer called the process group ID.
+This is the process ID of the group leader.
+This grouping permits the signaling of related processes (see
+.Xr termios 4 )
+and the job control mechanisms of
+.Xr ksh 1
+and
+.Xr csh 1 .
+.It Session
+A session is a set of one or more process groups.
+A session is created by a successful call to
+.Xr setsid 2 ,
+which causes the caller to become the only member of the only process
+group in the new session.
+.It Session Leader
+A process that has created a new session by a successful call to
+.Xr setsid 2 ,
+is known as a session leader.
+Only a session leader may acquire a terminal as its controlling terminal (see
+.Xr termios 4 ) .
+.It Controlling Process
+A session leader with a controlling terminal is a controlling process.
+.It Controlling Terminal
+A terminal that is associated with a session is known as the controlling
+terminal for that session and its members.
+.It Terminal Process Group ID
+A terminal may be acquired by a session leader as its controlling terminal.
+Once a terminal is associated with a session, any of the process groups
+within the session may be placed into the foreground by setting
+the terminal process group ID to the ID of the process group.
+This facility is used
+to arbitrate between multiple jobs contending for the same terminal;
+(see
+.Xr ksh 1 ,
+.Xr csh 1 ,
+and
+.Xr tty 4 ) .
+.It Orphaned Process Group
+A process group is considered to be
+.Em orphaned
+if it is not under the control of a job control shell.
+More precisely, a process group is orphaned
+when none of its members has a parent process that is in the same session
+as the group,
+but is in a different process group.
+Note that when a process exits, the parent process for its children
+is changed to be
+.Xr init 8 ,
+which is in a separate session.
+Not all members of an orphaned process group are necessarily orphaned
+processes (those whose creating process has exited).
+The process group of a session leader is orphaned by definition.
+.It Thread
+A thread is a preemptively scheduled flow of control within a process,
+with its own set of register values,
+floating point environment,
+thread ID,
+signal mask,
+pending signal set,
+alternate signal stack,
+thread control block address,
+resource utilization,
+errno variable location,
+and values for thread-specific keys.
+A process initially has just one thread,
+a duplicate of the thread in the parent process that created this process.
+.It Real User ID and Real Group ID
+Each user on the system is identified by a positive integer
+termed the real user ID.
+.Pp
+Each user is also a member of one or more groups.
+One of these groups is distinguished from others and
+used in implementing accounting facilities.
+The positive integer corresponding to this distinguished group is termed
+the real group ID.
+.Pp
+All processes have a real user ID and real group ID.
+These are initialized from the equivalent attributes
+of the process that created it.
+.It "Effective User ID, Effective Group ID, and Group Access List"
+Access to system resources is governed by two values:
+the effective user ID, and the group access list.
+The first member of the group access list is also known as the
+effective group ID.
+(In POSIX.1, the group access list is known as the set of supplementary
+group IDs, and it is unspecified whether the effective group ID is
+a member of the list.)
+.Pp
+The effective user ID and effective group ID are initially the
+process's real user ID and real group ID respectively.
+Either may be modified through execution of a set-user-ID or set-group-ID
+file (possibly by one of its ancestors) (see
+.Xr execve 2 ) .
+By convention, the effective group ID (the first member of the group access
+list) is duplicated, so that the execution of a set-group-ID program
+does not result in the loss of the original (real) group ID.
+.Pp
+The group access list is a set of group IDs
+used only in determining resource accessibility.
+Access checks are performed as described below in
+.Dq File Access Permissions .
+.It Saved Set User ID and Saved Set Group ID
+When a process executes a new file, the effective user ID is set
+to the owner of the file if the file is set-user-ID, and the effective
+group ID (first element of the group access list) is set to the group
+of the file if the file is set-group-ID.
+The effective user ID of the process is then recorded as the saved set-user-ID,
+and the effective group ID of the process is recorded as the saved set-group-ID.
+These values may be used to regain those values as the effective user
+or group ID after reverting to the real ID (see
+.Xr setuid 2 ) .
+(In POSIX.1, the saved set-user-ID and saved set-group-ID are optional,
+and are used in setuid and setgid, but this does not work as desired
+for the superuser.)
+.It Superuser
+A process is recognized as a
+.Em superuser
+process and is granted special privileges if its effective user ID is 0.
+.It Special Processes
+The processes with process IDs of 0 and 1 are special.
+Process 0 is the scheduler.
+Process 1 is the initialization process
+.Xr init 8 ,
+and is the ancestor of every other process in the system.
+It is used to control the process structure.
+.It Descriptor
+An integer assigned by the system when a file is referenced
+by
+.Xr open 2
+or
+.Xr dup 2 ,
+or when a socket is created by
+.Xr pipe 2 ,
+.Xr socket 2
+or
+.Xr socketpair 2 ,
+which uniquely identifies an access path to that file or socket from
+a given process or any of its children.
+.It File Name
+Names consisting of up to 255
+.Pq Dv NAME_MAX
+characters may be used to name
+an ordinary file, special file, or directory.
+.Pp
+These characters may be arbitrary eight-bit values,
+excluding 0 (NUL) and the ASCII code for
+.Ql \&/
+(slash).
+.Pp
+Note that it is generally unwise to use
+.Ql \&* ,
+.Ql \&? ,
+.Ql \&[
+or
+.Ql \&]
+as part of
+file names because of the special meaning attached to these characters
+by the shell.
+.Pp
+Note also that
+.Dv NAME_MAX
+is an upper limit fixed by the kernel, meant to be used for sizing buffers.
+Some filesystems may have additional restrictions.
+These can be queried using
+.Xr pathconf 2
+and
+.Xr fpathconf 2 .
+.It Pathname
+A pathname is a NUL-terminated
+character string starting with an
+optional slash
+.Ql \&/ ,
+followed by zero or more directory names separated
+by slashes, optionally followed by a file name.
+The total length of a pathname must be less than 1024
+.Pq Dv PATH_MAX
+characters.
+Additional restrictions may apply, depending upon the filesystem, to be
+queried with
+.Xr pathconf 2
+or
+.Xr fpathconf 2
+if needed.
+.Pp
+If a pathname begins with a slash, the path search begins at the
+.Em root
+directory.
+Otherwise, the search begins from the current working directory.
+A slash by itself names the root directory.
+An empty pathname is invalid.
+.It Directory
+A directory is a special type of file that contains entries
+that are references to other files.
+Directory entries are called links.
+By convention, a directory contains at least two links,
+.Ql \&.
+and
+.Ql \&.. ,
+referred to as
+.Em dot
+and
+.Em dot-dot
+respectively.
+Dot refers to the directory itself and dot-dot refers to its
+parent directory.
+.It "Root Directory and Current Working Directory"
+Each process has associated with it a concept of a root directory
+and a current working directory for the purpose of resolving path
+name searches.
+A process's root directory need not be the root directory of
+the root file system.
+.It File Access Permissions
+Every file in the file system has a set of access permissions.
+These permissions are used in determining whether a process
+may perform a requested operation on the file (such as opening
+a file for writing).
+Access permissions are established at the time a file is created.
+They may be changed at some later time through the
+.Xr chmod 2
+call.
+.Pp
+File access is broken down according to whether a file may be: read,
+written, or executed.
+Directory files use the execute permission to control if the directory
+may be searched.
+.Pp
+File access permissions are interpreted by the system as
+they apply to three different classes of users: the owner
+of the file, those users in the file's group, anyone else.
+Every file has an independent set of access permissions for
+each of these classes.
+When an access check is made, the system decides if permission should be
+granted by checking the access information applicable to the caller.
+.Pp
+Read, write, and execute/search permissions on
+a file are granted to a process if:
+.Pp
+The process's effective user ID is that of the superuser.
+(Note: even the superuser cannot execute a non-executable file.)
+.Pp
+The process's effective user ID matches the user ID of the owner
+of the file and the owner permissions allow the access.
+.Pp
+The process's effective user ID does not match the user ID of the
+owner of the file, and either the process's effective
+group ID matches the group ID
+of the file, or the group ID of the file is in
+the process's group access list,
+and the group permissions allow the access.
+.Pp
+Neither the effective user ID nor effective group ID
+and group access list of the process
+match the corresponding user ID and group ID of the file,
+but the permissions for
+.Dq other users
+allow access.
+.Pp
+Otherwise, permission is denied.
+.It Sockets and Address Families
+A socket is an endpoint for communication between processes.
+Each socket has queues for sending and receiving data.
+.Pp
+Sockets are typed according to their communications properties.
+These properties include whether messages sent and received
+at a socket require the name of the partner, whether communication
+is reliable, the format used in naming message recipients, etc.
+.Pp
+Each instance of the system supports some
+collection of socket types; consult
+.Xr socket 2
+for more information about the types available and
+their properties.
+.Pp
+Each instance of the system supports some number of sets of
+communications protocols.
+Each protocol set supports addresses of a certain format.
+An Address Family is the set of addresses for a specific group of protocols.
+Each socket has an address chosen from the address family in which the
+socket was created.
+.El
+.Sh SEE ALSO
+.Xr pledge 2 ,
+.Xr intro 3 ,
+.Xr perror 3
+.Sh STANDARDS
+Most of the macro names that resolve to error numbers
+are required to be defined by
+.St -p1003.1-2024 .
+In some cases, the standard requires certain kinds of failures
+to be reported with certain error numbers.
+It some cases, it allows certain kinds of failures
+to optionally be reported with certain error numbers.
+In some cases, it is entirely silent about whether and how
+the system should report problems.
+.Pp
+The following defined constants are extensions to the standard:
+.Er EAUTH ,
+.Er EBADRPC ,
+.Er EFTYPE ,
+.Er EHOSTDOWN ,
+.Er EIPSEC ,
+.Er EMEDIUMTYPE ,
+.Er ENEEDAUTH ,
+.Er ENOATTR ,
+.Er ENOMEDIUM ,
+.Er ENOTBLK ,
+.Er EPFNOSUPPORT ,
+.Er EPROCLIM ,
+.Er EPROCUNAVAIL ,
+.Er EPROGMISMATCH ,
+.Er EPROGUNAVAIL ,
+.Er EREMOTE ,
+.Er ERPCMISMATCH ,
+.Er ESHUTDOWN ,
+.Er ETOOMANYREFS ,
+and
+.Er EUSERS .
+.Sh HISTORY
+An
+.Nm
+manual for section 2 first appeared in
+.At v5 .
+.Sh BUGS
+Since some error numbers are only loosely defined, and since which error
+numbers any given function can set often varies from system to system,
+programs usually need to make a fallback decision when receiving an
+unexpected error number, typically treating it as a hard failure,
+or less commonly just ignoring it.
+Making portable decisions based on error numbers is only possible
+for some specific error numbers being set by some specific functions.