xref: /freebsd/lib/libsys/intro.2 (revision 9e8df7900f5285fb6815fbd333cf6e084679879c)
1*9e8df790SAlexander Ziaee.\"-
2*9e8df790SAlexander Ziaee.\" SPDX-License-Identifier: BSD-3-Clause
3*9e8df790SAlexander Ziaee.\"
48269e767SBrooks Davis.\" Copyright (c) 1980, 1983, 1986, 1991, 1993
58269e767SBrooks Davis.\"	The Regents of the University of California.  All rights reserved.
68269e767SBrooks Davis.\"
78269e767SBrooks Davis.\" Redistribution and use in source and binary forms, with or without
88269e767SBrooks Davis.\" modification, are permitted provided that the following conditions
98269e767SBrooks Davis.\" are met:
108269e767SBrooks Davis.\" 1. Redistributions of source code must retain the above copyright
118269e767SBrooks Davis.\"    notice, this list of conditions and the following disclaimer.
128269e767SBrooks Davis.\" 2. Redistributions in binary form must reproduce the above copyright
138269e767SBrooks Davis.\"    notice, this list of conditions and the following disclaimer in the
148269e767SBrooks Davis.\"    documentation and/or other materials provided with the distribution.
158269e767SBrooks Davis.\" 3. Neither the name of the University nor the names of its contributors
168269e767SBrooks Davis.\"    may be used to endorse or promote products derived from this software
178269e767SBrooks Davis.\"    without specific prior written permission.
188269e767SBrooks Davis.\"
198269e767SBrooks Davis.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
208269e767SBrooks Davis.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
218269e767SBrooks Davis.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
228269e767SBrooks Davis.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
238269e767SBrooks Davis.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
248269e767SBrooks Davis.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
258269e767SBrooks Davis.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
268269e767SBrooks Davis.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
278269e767SBrooks Davis.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
288269e767SBrooks Davis.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
298269e767SBrooks Davis.\" SUCH DAMAGE.
308269e767SBrooks Davis.\"
31bcc57e97SAlexander Ziaee.Dd April 19, 2024
328269e767SBrooks Davis.Dt INTRO 2
338269e767SBrooks Davis.Os
348269e767SBrooks Davis.Sh NAME
358269e767SBrooks Davis.Nm intro
368269e767SBrooks Davis.Nd introduction to system calls and error numbers
378269e767SBrooks Davis.Sh LIBRARY
388269e767SBrooks Davis.Lb libc
398269e767SBrooks Davis.Sh SYNOPSIS
408269e767SBrooks Davis.In errno.h
418269e767SBrooks Davis.Sh DESCRIPTION
428269e767SBrooks DavisThis section provides an overview of the system calls,
438269e767SBrooks Davistheir error returns, and other common definitions and concepts.
448269e767SBrooks Davis.\".Pp
458269e767SBrooks Davis.\".Sy System call restart
468269e767SBrooks Davis.\".Pp
478269e767SBrooks Davis.\"(more later...)
488269e767SBrooks Davis.Sh RETURN VALUES
498269e767SBrooks DavisNearly all of the system calls provide an error number referenced via
50*9e8df790SAlexander Ziaeethe external identifier
51*9e8df790SAlexander Ziaee.Va errno .
528269e767SBrooks DavisThis identifier is defined in
538269e767SBrooks Davis.In sys/errno.h
54*9e8df790SAlexander Ziaeeas:
558269e767SBrooks Davis.Pp
568269e767SBrooks Davis.Dl extern    int *       __error();
578269e767SBrooks Davis.Dl #define   errno       (* __error())
588269e767SBrooks Davis.Pp
598269e767SBrooks DavisThe
608269e767SBrooks Davis.Va __error()
618269e767SBrooks Davisfunction returns a pointer to a field in the thread specific structure for
628269e767SBrooks Davisthreads other than the initial thread.
638269e767SBrooks DavisFor the initial thread and
648269e767SBrooks Davisnon-threaded processes,
658269e767SBrooks Davis.Va __error()
668269e767SBrooks Davisreturns a pointer to a global
678269e767SBrooks Davis.Va errno
688269e767SBrooks Davisvariable that is compatible with the previous definition.
698269e767SBrooks Davis.Pp
708269e767SBrooks DavisWhen a system call detects an error,
718269e767SBrooks Davisit returns an integer value
72*9e8df790SAlexander Ziaeeindicating failure
73*9e8df790SAlexander Ziaee.Pq usually -1
748269e767SBrooks Davisand sets the variable
758269e767SBrooks Davis.Va errno
768269e767SBrooks Davisaccordingly.
77*9e8df790SAlexander ZiaeeThis allows interpretation of the failure on receiving
78*9e8df790SAlexander Ziaee-1 and to take action accordingly.
798269e767SBrooks DavisSuccessful calls never set
808269e767SBrooks Davis.Va errno ;
818269e767SBrooks Davisonce set, it remains until another error occurs.
828269e767SBrooks DavisIt should only be examined after an error.
838269e767SBrooks DavisNote that a number of system calls overload the meanings of these
848269e767SBrooks Daviserror numbers, and that the meanings must be interpreted according
858269e767SBrooks Davisto the type and circumstances of the call.
868269e767SBrooks Davis.Pp
878269e767SBrooks DavisThe following is a complete list of the errors and their
888269e767SBrooks Davisnames as given in
898269e767SBrooks Davis.In sys/errno.h .
908269e767SBrooks Davis.Bl -hang -width Ds
918269e767SBrooks Davis.It Er 0 Em "Undefined error: 0" .
928269e767SBrooks DavisNot used.
938269e767SBrooks Davis.It Er 1 EPERM Em "Operation not permitted" .
948269e767SBrooks DavisAn attempt was made to perform an operation limited to processes
958269e767SBrooks Daviswith appropriate privileges or to the owner of a file or other
968269e767SBrooks Davisresources.
978269e767SBrooks Davis.It Er 2 ENOENT Em "No such file or directory" .
988269e767SBrooks DavisA component of a specified pathname did not exist, or the
998269e767SBrooks Davispathname was an empty string.
1008269e767SBrooks Davis.It Er 3 ESRCH Em "No such process" .
1018269e767SBrooks DavisNo process could be found corresponding to that specified by the given
1028269e767SBrooks Davisprocess ID.
1038269e767SBrooks Davis.It Er 4 EINTR Em "Interrupted system call" .
104*9e8df790SAlexander ZiaeeAn asynchronous signal
105*9e8df790SAlexander Ziaee.Pq such as Dv SIGINT or Dv SIGQUIT
1068269e767SBrooks Daviswas caught by the process during the execution of an interruptible
1078269e767SBrooks Davisfunction.
1088269e767SBrooks DavisIf the signal handler performs a normal return, the
1098269e767SBrooks Davisinterrupted system call will seem to have returned the error condition.
1108269e767SBrooks Davis.It Er 5 EIO Em "Input/output error" .
1118269e767SBrooks DavisSome physical input or output error occurred.
1128269e767SBrooks DavisThis error will not be reported until a subsequent operation on the same file
113*9e8df790SAlexander Ziaeedescriptor and may be lost
114*9e8df790SAlexander Ziaee.Pq over written
115*9e8df790SAlexander Ziaeeby any subsequent errors.
1168269e767SBrooks Davis.It Er 6 ENXIO Em "Device not configured" .
1178269e767SBrooks DavisInput or output on a special file referred to a device that did not
1188269e767SBrooks Davisexist, or
1198269e767SBrooks Davismade a request beyond the limits of the device.
1208269e767SBrooks DavisThis error may also occur when, for example,
1218269e767SBrooks Davisa tape drive is not online or no disk pack is
1228269e767SBrooks Davisloaded on a drive.
1238269e767SBrooks Davis.It Er 7 E2BIG Em "Argument list too long" .
1248269e767SBrooks DavisThe number of bytes used for the argument and environment
1258269e767SBrooks Davislist of the new process exceeded the current limit
126*9e8df790SAlexander Ziaee.Pq Dv NCARGS in In sys/param.h .
1278269e767SBrooks Davis.It Er 8 ENOEXEC Em "Exec format error" .
1288269e767SBrooks DavisA request was made to execute a file
1298269e767SBrooks Davisthat, although it has the appropriate permissions,
1308269e767SBrooks Daviswas not in the format required for an
1318269e767SBrooks Davisexecutable file.
1328269e767SBrooks Davis.It Er 9 EBADF Em "Bad file descriptor" .
1338269e767SBrooks DavisA file descriptor argument was out of range, referred to no open file,
134*9e8df790SAlexander Ziaeeor a read
135*9e8df790SAlexander Ziaee.Pq write
136*9e8df790SAlexander Ziaeerequest was made to a file that was only open for writing
137*9e8df790SAlexander Ziaee.Pq reading .
1388269e767SBrooks Davis.It Er 10 ECHILD Em "\&No child processes" .
1398269e767SBrooks DavisA
140*9e8df790SAlexander Ziaee.Xr wait 2 or Xr waitpid 2
1418269e767SBrooks Davisfunction was executed by a process that had no existing or unwaited-for
1428269e767SBrooks Davischild processes.
1438269e767SBrooks Davis.It Er 11 EDEADLK Em "Resource deadlock avoided" .
1448269e767SBrooks DavisAn attempt was made to lock a system resource that
1458269e767SBrooks Daviswould have resulted in a deadlock situation.
1468269e767SBrooks Davis.It Er 12 ENOMEM Em "Cannot allocate memory" .
1478269e767SBrooks DavisThe new process image required more memory than was allowed by the hardware
1488269e767SBrooks Davisor by system-imposed memory management constraints.
1498269e767SBrooks DavisA lack of swap space is normally temporary; however,
1508269e767SBrooks Davisa lack of core is not.
1518269e767SBrooks DavisSoft limits may be increased to their corresponding hard limits.
1528269e767SBrooks Davis.It Er 13 EACCES Em "Permission denied" .
1538269e767SBrooks DavisAn attempt was made to access a file in a way forbidden
1548269e767SBrooks Davisby its file access permissions.
1558269e767SBrooks Davis.It Er 14 EFAULT Em "Bad address" .
1568269e767SBrooks DavisThe system detected an invalid address in attempting to
1578269e767SBrooks Davisuse an argument of a call.
1588269e767SBrooks Davis.It Er 15 ENOTBLK Em "Block device required" .
1598269e767SBrooks DavisA block device operation was attempted on a non-block device or file.
1608269e767SBrooks Davis.It Er 16 EBUSY Em "Device busy" .
1618269e767SBrooks DavisAn attempt to use a system resource which was in use at the time
1628269e767SBrooks Davisin a manner which would have conflicted with the request.
1638269e767SBrooks Davis.It Er 17 EEXIST Em "File exists" .
1648269e767SBrooks DavisAn existing file was mentioned in an inappropriate context,
1658269e767SBrooks Davisfor instance, as the new link name in a
1668269e767SBrooks Davis.Xr link 2
1678269e767SBrooks Davissystem call.
1688269e767SBrooks Davis.It Er 18 EXDEV Em "Cross-device link" .
1698269e767SBrooks DavisA hard link to a file on another file system
1708269e767SBrooks Daviswas attempted.
1718269e767SBrooks Davis.It Er 19 ENODEV Em "Operation not supported by device" .
1728269e767SBrooks DavisAn attempt was made to apply an inappropriate
1738269e767SBrooks Davisfunction to a device,
1748269e767SBrooks Davisfor example,
1758269e767SBrooks Davistrying to read a write-only device such as a printer.
1768269e767SBrooks Davis.It Er 20 ENOTDIR Em "Not a directory" .
1778269e767SBrooks DavisA component of the specified pathname existed, but it was
1788269e767SBrooks Davisnot a directory, when a directory was expected.
1798269e767SBrooks Davis.It Er 21 EISDIR Em "Is a directory" .
1808269e767SBrooks DavisAn attempt was made to open a directory with write mode specified.
1818269e767SBrooks Davis.It Er 22 EINVAL Em "Invalid argument" .
1828269e767SBrooks DavisSome invalid argument was supplied.
183*9e8df790SAlexander ZiaeeFor example, specifying an undefined signal to a
1848269e767SBrooks Davis.Xr signal 3
185*9e8df790SAlexander Ziaeefunction or a
1868269e767SBrooks Davis.Xr kill 2
187*9e8df790SAlexander Ziaeesystem call.
1888269e767SBrooks Davis.It Er 23 ENFILE Em "Too many open files in system" .
1898269e767SBrooks DavisMaximum number of open files allowable on the system
1908269e767SBrooks Davishas been reached and requests for an open cannot be satisfied
1918269e767SBrooks Davisuntil at least one has been closed.
1928269e767SBrooks Davis.It Er 24 EMFILE Em "Too many open files" .
1938269e767SBrooks DavisMaximum number of file descriptors allowable in the process
1948269e767SBrooks Davishas been reached and requests for an open cannot be satisfied
1958269e767SBrooks Davisuntil at least one has been closed.
1968269e767SBrooks DavisThe
1978269e767SBrooks Davis.Xr getdtablesize 2
1988269e767SBrooks Davissystem call will obtain the current limit.
1998269e767SBrooks Davis.It Er 25 ENOTTY Em "Inappropriate ioctl for device" .
200*9e8df790SAlexander ZiaeeA control function
201*9e8df790SAlexander Ziaee.Pq see Xr ioctl 2
2028269e767SBrooks Daviswas attempted for a file or
2038269e767SBrooks Davisspecial device for which the operation was inappropriate.
2048269e767SBrooks Davis.It Er 26 ETXTBSY Em "Text file busy" .
205*9e8df790SAlexander ZiaeeThe new process was a pure procedure
206*9e8df790SAlexander Ziaee.Pq shared text
207*9e8df790SAlexander Ziaeefile which was open for writing by another process, or
2088269e767SBrooks Daviswhile the pure procedure file was being executed an
2098269e767SBrooks Davis.Xr open 2
2108269e767SBrooks Daviscall requested write access.
2118269e767SBrooks Davis.It Er 27 EFBIG Em "File too large" .
2128269e767SBrooks DavisThe size of a file exceeded the maximum.
2138269e767SBrooks Davis.It Er 28 ENOSPC Em "No space left on device" .
2148269e767SBrooks DavisA
2158269e767SBrooks Davis.Xr write 2
2168269e767SBrooks Davisto an ordinary file, the creation of a
2178269e767SBrooks Davisdirectory or symbolic link, or the creation of a directory
2188269e767SBrooks Davisentry failed because no more disk blocks were available
2198269e767SBrooks Davison the file system, or the allocation of an inode for a newly
2208269e767SBrooks Daviscreated file failed because no more inodes were available
2218269e767SBrooks Davison the file system.
2228269e767SBrooks Davis.It Er 29 ESPIPE Em "Illegal seek" .
2238269e767SBrooks DavisAn
2248269e767SBrooks Davis.Xr lseek 2
225*9e8df790SAlexander Ziaeesystem call was issued on a socket, pipe or FIFO.
2268269e767SBrooks Davis.It Er 30 EROFS Em "Read-only file system" .
2278269e767SBrooks DavisAn attempt was made to modify a file or directory
2288269e767SBrooks Davison a file system that was read-only at the time.
2298269e767SBrooks Davis.It Er 31 EMLINK Em "Too many links" .
230*9e8df790SAlexander ZiaeeMaximum allowable hard links to a single file has been exceeded
231*9e8df790SAlexander Ziaee.Pq limit of 32767 hard links per file .
2328269e767SBrooks Davis.It Er 32 EPIPE Em "Broken pipe" .
233*9e8df790SAlexander ZiaeeA write on a pipe, socket or FIFO for which there is no process to read
234*9e8df790SAlexander Ziaeethe data.
2358269e767SBrooks Davis.It Er 33 EDOM Em "Numerical argument out of domain" .
2368269e767SBrooks DavisA numerical input argument was outside the defined domain of the mathematical
2378269e767SBrooks Davisfunction.
2388269e767SBrooks Davis.It Er 34 ERANGE Em "Result too large" .
2398269e767SBrooks DavisA numerical result of the function was too large to fit in the
240*9e8df790SAlexander Ziaeeavailable space
241*9e8df790SAlexander Ziaee.Pq perhaps exceeded precision .
2428269e767SBrooks Davis.It Er 35 EAGAIN Em "Resource temporarily unavailable" .
2438269e767SBrooks DavisThis is a temporary condition and later calls to the
2448269e767SBrooks Davissame routine may complete normally.
2458269e767SBrooks Davis.It Er 36 EINPROGRESS Em "Operation now in progress" .
246*9e8df790SAlexander ZiaeeAn operation that takes a long time to complete, such as
247*9e8df790SAlexander Ziaee.Xr connect 2 ,
248*9e8df790SAlexander Ziaeewas attempted on a non-blocking object
249*9e8df790SAlexander Ziaee.Pq see Xr fcntl 2 .
2508269e767SBrooks Davis.It Er 37 EALREADY Em "Operation already in progress" .
2518269e767SBrooks DavisAn operation was attempted on a non-blocking object that already
2528269e767SBrooks Davishad an operation in progress.
2538269e767SBrooks Davis.It Er 38 ENOTSOCK Em "Socket operation on non-socket" .
2548269e767SBrooks DavisSelf-explanatory.
2558269e767SBrooks Davis.It Er 39 EDESTADDRREQ Em "Destination address required" .
2568269e767SBrooks DavisA required address was omitted from an operation on a socket.
2578269e767SBrooks Davis.It Er 40 EMSGSIZE Em "Message too long" .
2588269e767SBrooks DavisA message sent on a socket was larger than the internal message buffer
2598269e767SBrooks Davisor some other network limit.
2608269e767SBrooks Davis.It Er 41 EPROTOTYPE Em "Protocol wrong type for socket" .
2618269e767SBrooks DavisA protocol was specified that does not support the semantics of the
2628269e767SBrooks Davissocket type requested.
263*9e8df790SAlexander ZiaeeFor example, you cannot use the ARPA Internet UDP protocol with type
2648269e767SBrooks Davis.Dv SOCK_STREAM .
2658269e767SBrooks Davis.It Er 42 ENOPROTOOPT Em "Protocol not available" .
2668269e767SBrooks DavisA bad option or level was specified in a
2678269e767SBrooks Davis.Xr getsockopt 2
2688269e767SBrooks Davisor
2698269e767SBrooks Davis.Xr setsockopt 2
2708269e767SBrooks Daviscall.
2718269e767SBrooks Davis.It Er 43 EPROTONOSUPPORT Em "Protocol not supported" .
2728269e767SBrooks DavisThe protocol has not been configured into the
2738269e767SBrooks Davissystem or no implementation for it exists.
2748269e767SBrooks Davis.It Er 44 ESOCKTNOSUPPORT Em "Socket type not supported" .
2758269e767SBrooks DavisThe support for the socket type has not been configured into the
2768269e767SBrooks Davissystem or no implementation for it exists.
2778269e767SBrooks Davis.It Er 45 EOPNOTSUPP Em "Operation not supported" .
2788269e767SBrooks DavisThe attempted operation is not supported for the type of object referenced.
2798269e767SBrooks DavisUsually this occurs when a file descriptor refers to a file or socket
2808269e767SBrooks Davisthat cannot support this operation,
2818269e767SBrooks Davisfor example, trying to
2828269e767SBrooks Davis.Em accept
2838269e767SBrooks Davisa connection on a datagram socket.
2848269e767SBrooks Davis.It Er 46 EPFNOSUPPORT Em "Protocol family not supported" .
2858269e767SBrooks DavisThe protocol family has not been configured into the
2868269e767SBrooks Davissystem or no implementation for it exists.
2878269e767SBrooks Davis.It Er 47 EAFNOSUPPORT Em "Address family not supported by protocol family" .
2888269e767SBrooks DavisAn address incompatible with the requested protocol was used.
2898269e767SBrooks DavisFor example, you should not necessarily expect to be able to use
290*9e8df790SAlexander ZiaeeNS addresses with ARPA Internet protocols.
2918269e767SBrooks Davis.It Er 48 EADDRINUSE Em "Address already in use" .
2928269e767SBrooks DavisOnly one usage of each address is normally permitted.
2938269e767SBrooks Davis.It Er 49 EADDRNOTAVAIL Em "Can't assign requested address" .
2948269e767SBrooks DavisNormally results from an attempt to create a socket with an
2958269e767SBrooks Davisaddress not on this machine.
2968269e767SBrooks Davis.It Er 50 ENETDOWN Em "Network is down" .
2978269e767SBrooks DavisA socket operation encountered a dead network.
2988269e767SBrooks Davis.It Er 51 ENETUNREACH Em "Network is unreachable" .
2998269e767SBrooks DavisA socket operation was attempted to an unreachable network.
3008269e767SBrooks Davis.It Er 52 ENETRESET Em "Network dropped connection on reset" .
3018269e767SBrooks DavisThe host you were connected to crashed and rebooted.
3028269e767SBrooks Davis.It Er 53 ECONNABORTED Em "Software caused connection abort" .
3038269e767SBrooks DavisA connection abort was caused internal to your host machine.
3048269e767SBrooks Davis.It Er 54 ECONNRESET Em "Connection reset by peer" .
3058269e767SBrooks DavisA connection was forcibly closed by a peer.
3068269e767SBrooks DavisThis normally
3078269e767SBrooks Davisresults from a loss of the connection on the remote socket
3088269e767SBrooks Davisdue to a timeout or a reboot.
3098269e767SBrooks Davis.It Er 55 ENOBUFS Em "\&No buffer space available" .
3108269e767SBrooks DavisAn operation on a socket or pipe was not performed because
3118269e767SBrooks Davisthe system lacked sufficient buffer space or because a queue was full.
3128269e767SBrooks Davis.It Er 56 EISCONN Em "Socket is already connected" .
3138269e767SBrooks DavisA
3148269e767SBrooks Davis.Xr connect 2
3158269e767SBrooks Davisrequest was made on an already connected socket; or,
3168269e767SBrooks Davisa
3178269e767SBrooks Davis.Xr sendto 2
3188269e767SBrooks Davisor
3198269e767SBrooks Davis.Xr sendmsg 2
3208269e767SBrooks Davisrequest on a connected socket specified a destination
3218269e767SBrooks Daviswhen already connected.
3228269e767SBrooks Davis.It Er 57 ENOTCONN Em "Socket is not connected" .
3238269e767SBrooks DavisAn request to send or receive data was disallowed because
324*9e8df790SAlexander Ziaeethe socket was not connected and
325*9e8df790SAlexander Ziaee.Pq when sending on a datagram socket
3268269e767SBrooks Davisno address was supplied.
3278269e767SBrooks Davis.It Er 58 ESHUTDOWN Em "Can't send after socket shutdown" .
3288269e767SBrooks DavisA request to send data was disallowed because the socket
3298269e767SBrooks Davishad already been shut down with a previous
3308269e767SBrooks Davis.Xr shutdown 2
3318269e767SBrooks Daviscall.
3328269e767SBrooks Davis.It Er 60 ETIMEDOUT Em "Operation timed out" .
3338269e767SBrooks DavisA
3348269e767SBrooks Davis.Xr connect 2
3358269e767SBrooks Davisor
3368269e767SBrooks Davis.Xr send 2
3378269e767SBrooks Davisrequest failed because the connected party did not
3388269e767SBrooks Davisproperly respond after a period of time.
339*9e8df790SAlexander ZiaeeThe timeout period is dependent on the communication protocol.
3408269e767SBrooks Davis.It Er 61 ECONNREFUSED Em "Connection refused" .
3418269e767SBrooks DavisNo connection could be made because the target machine actively
3428269e767SBrooks Davisrefused it.
3438269e767SBrooks DavisThis usually results from trying to connect
3448269e767SBrooks Davisto a service that is inactive on the foreign host.
3458269e767SBrooks Davis.It Er 62 ELOOP Em "Too many levels of symbolic links" .
3468269e767SBrooks DavisA path name lookup involved more than 32
3478269e767SBrooks Davis.Pq Dv MAXSYMLINKS
3488269e767SBrooks Davissymbolic links.
3498269e767SBrooks Davis.It Er 63 ENAMETOOLONG Em "File name too long" .
3508269e767SBrooks DavisA component of a path name exceeded
3518269e767SBrooks Davis.Brq Dv NAME_MAX
3528269e767SBrooks Davischaracters, or an entire
3538269e767SBrooks Davispath name exceeded
3548269e767SBrooks Davis.Brq Dv PATH_MAX
3558269e767SBrooks Davischaracters.
356*9e8df790SAlexander ZiaeeSee also the description of
357*9e8df790SAlexander Ziaee.Dv _PC_NO_TRUNC in Xr pathconf 2 .
3588269e767SBrooks Davis.It Er 64 EHOSTDOWN Em "Host is down" .
3598269e767SBrooks DavisA socket operation failed because the destination host was down.
3608269e767SBrooks Davis.It Er 65 EHOSTUNREACH Em "No route to host" .
3618269e767SBrooks DavisA socket operation was attempted to an unreachable host.
3628269e767SBrooks Davis.It Er 66 ENOTEMPTY Em "Directory not empty" .
3638269e767SBrooks DavisA directory with entries other than
3648269e767SBrooks Davis.Ql .\&
3658269e767SBrooks Davisand
3668269e767SBrooks Davis.Ql ..\&
3678269e767SBrooks Daviswas supplied to a remove directory or rename call.
3688269e767SBrooks Davis.It Er 67 EPROCLIM Em "Too many processes" .
3698269e767SBrooks Davis.It Er 68 EUSERS Em "Too many users" .
3708269e767SBrooks DavisThe quota system ran out of table entries.
3718269e767SBrooks Davis.It Er 69 EDQUOT Em "Disc quota exceeded" .
3728269e767SBrooks DavisA
3738269e767SBrooks Davis.Xr write 2
3748269e767SBrooks Davisto an ordinary file, the creation of a
3758269e767SBrooks Davisdirectory or symbolic link, or the creation of a directory
3768269e767SBrooks Davisentry failed because the user's quota of disk blocks was
3778269e767SBrooks Davisexhausted, or the allocation of an inode for a newly
3788269e767SBrooks Daviscreated file failed because the user's quota of inodes
3798269e767SBrooks Daviswas exhausted.
3808269e767SBrooks Davis.It Er 70 ESTALE Em "Stale NFS file handle" .
381*9e8df790SAlexander ZiaeeAn attempt was made to access an open file
382*9e8df790SAlexander Ziaee.Pq on an NFS file system
3838269e767SBrooks Daviswhich is now unavailable as referenced by the file descriptor.
384*9e8df790SAlexander ZiaeeThis may indicate the file was deleted on the NFS server or some
3858269e767SBrooks Davisother catastrophic event occurred.
3868269e767SBrooks Davis.It Er 72 EBADRPC Em "RPC struct is bad" .
387*9e8df790SAlexander ZiaeeExchange of RPC information was unsuccessful.
3888269e767SBrooks Davis.It Er 73 ERPCMISMATCH Em "RPC version wrong" .
389*9e8df790SAlexander ZiaeeThe version of RPC on the remote peer is not compatible with
3908269e767SBrooks Davisthe local version.
3918269e767SBrooks Davis.It Er 74 EPROGUNAVAIL Em "RPC prog. not avail" .
3928269e767SBrooks DavisThe requested program is not registered on the remote host.
3938269e767SBrooks Davis.It Er 75 EPROGMISMATCH Em "Program version wrong" .
3948269e767SBrooks DavisThe requested version of the program is not available
3958269e767SBrooks Davison the remote host
396*9e8df790SAlexander Ziaee.Pq RPC .
3978269e767SBrooks Davis.It Er 76 EPROCUNAVAIL Em "Bad procedure for program" .
398*9e8df790SAlexander ZiaeeAn RPC call was attempted for a procedure which does not exist
3998269e767SBrooks Davisin the remote program.
4008269e767SBrooks Davis.It Er 77 ENOLCK Em "No locks available" .
4018269e767SBrooks DavisA system-imposed limit on the number of simultaneous file
4028269e767SBrooks Davislocks was reached.
4038269e767SBrooks Davis.It Er 78 ENOSYS Em "Function not implemented" .
4048269e767SBrooks DavisAttempted a system call that is not available on this
4058269e767SBrooks Davissystem.
4068269e767SBrooks Davis.It Er 79 EFTYPE Em "Inappropriate file type or format" .
4078269e767SBrooks DavisThe file was the wrong type for the operation, or a data file had
4088269e767SBrooks Davisthe wrong format.
4098269e767SBrooks Davis.It Er 80 EAUTH Em "Authentication error" .
4108269e767SBrooks DavisAttempted to use an invalid authentication ticket to mount a
411*9e8df790SAlexander ZiaeeNFS file system.
4128269e767SBrooks Davis.It Er 81 ENEEDAUTH Em "Need authenticator" .
413*9e8df790SAlexander ZiaeeAn authentication ticket must be obtained before the given NFS
4148269e767SBrooks Davisfile system may be mounted.
4158269e767SBrooks Davis.It Er 82 EIDRM Em "Identifier removed" .
4168269e767SBrooks DavisAn IPC identifier was removed while the current process was waiting on it.
4178269e767SBrooks Davis.It Er 83 ENOMSG Em "No message of desired type" .
4188269e767SBrooks DavisAn IPC message queue does not contain a message of the desired type, or a
4198269e767SBrooks Davismessage catalog does not contain the requested message.
4208269e767SBrooks Davis.It Er 84 EOVERFLOW Em "Value too large to be stored in data type" .
4218269e767SBrooks DavisA numerical result of the function was too large to be stored in the caller
4228269e767SBrooks Davisprovided space.
4238269e767SBrooks Davis.It Er 85 ECANCELED Em "Operation canceled" .
4248269e767SBrooks DavisThe scheduled operation was canceled.
4258269e767SBrooks Davis.It Er 86 EILSEQ Em "Illegal byte sequence" .
4268269e767SBrooks DavisWhile decoding a multibyte character the function came along an
4278269e767SBrooks Davisinvalid or an incomplete sequence of bytes or the given wide
4288269e767SBrooks Davischaracter is invalid.
4298269e767SBrooks Davis.It Er 87 ENOATTR Em "Attribute not found" .
4308269e767SBrooks DavisThe specified extended attribute does not exist.
4318269e767SBrooks Davis.It Er 88 EDOOFUS Em "Programming error" .
4328269e767SBrooks DavisA function or API is being abused in a way which could only be detected
4338269e767SBrooks Davisat run-time.
4348269e767SBrooks Davis.It Er 89 EBADMSG Em "Bad message" .
4358269e767SBrooks DavisA corrupted message was detected.
4368269e767SBrooks Davis.It Er 90 EMULTIHOP Em "Multihop attempted" .
4378269e767SBrooks DavisThis error code is unused, but present for compatibility with other systems.
4388269e767SBrooks Davis.It Er 91 ENOLINK Em "Link has been severed" .
4398269e767SBrooks DavisThis error code is unused, but present for compatibility with other systems.
4408269e767SBrooks Davis.It Er 92 EPROTO Em "Protocol error" .
4418269e767SBrooks DavisA device or socket encountered an unrecoverable protocol error.
4428269e767SBrooks Davis.It Er 93 ENOTCAPABLE Em "Capabilities insufficient" .
4438269e767SBrooks DavisAn operation on a capability file descriptor requires greater privilege than
4448269e767SBrooks Davisthe capability allows.
4458269e767SBrooks Davis.It Er 94 ECAPMODE Em "Not permitted in capability mode" .
4468269e767SBrooks DavisThe system call or operation is not permitted for capability mode processes.
4478269e767SBrooks Davis.It Er 95 ENOTRECOVERABLE Em "State not recoverable" .
4488269e767SBrooks DavisThe state protected by a robust mutex is not recoverable.
4498269e767SBrooks Davis.It Er 96 EOWNERDEAD Em "Previous owner died" .
4508269e767SBrooks DavisThe owner of a robust mutex terminated while holding the mutex lock.
4518269e767SBrooks Davis.It Er 97 EINTEGRITY Em "Integrity check failed" .
4528269e767SBrooks DavisAn integrity check such as a check-hash or a cross-correlation failed.
4538269e767SBrooks DavisThe integrity error falls in the kernel I/O stack between
4548269e767SBrooks Davis.Er EINVAL
4558269e767SBrooks Davisthat identifies errors in parameters to a system call and
4568269e767SBrooks Davis.Er EIO
4578269e767SBrooks Davisthat identifies errors with the underlying storage media.
4588269e767SBrooks DavisIt is typically raised by intermediate kernel layers such as a
4598269e767SBrooks Davisfilesystem or an in-kernel GEOM subsystem when they detect inconsistencies.
4608269e767SBrooks DavisUses include allowing the
4618269e767SBrooks Davis.Xr mount 8
4628269e767SBrooks Daviscommand to return a different exit value to automate the running of
4638269e767SBrooks Davis.Xr fsck 8
4648269e767SBrooks Davisduring a system boot.
4658269e767SBrooks Davis.El
4668269e767SBrooks Davis.Sh DEFINITIONS
4678269e767SBrooks Davis.Bl -tag -width Ds
468*9e8df790SAlexander Ziaee.It Process ID
4698269e767SBrooks DavisEach active process in the system is uniquely identified by a non-negative
4708269e767SBrooks Davisinteger called a process ID.
4718269e767SBrooks DavisThe range of this ID is from 0 to 99999.
4728269e767SBrooks Davis.It Parent process ID
473*9e8df790SAlexander ZiaeeA new process is created by a currently active process
474*9e8df790SAlexander Ziaee.Pq see Xr fork 2 .
4758269e767SBrooks DavisThe parent process ID of a process is initially the process ID of its creator.
4768269e767SBrooks DavisIf the creating process exits,
4778269e767SBrooks Davisthe parent process ID of each child is set to the ID of the calling process's
478*9e8df790SAlexander Ziaeereaper
479*9e8df790SAlexander Ziaee.Pq see Xr procctl 2 ,
4808269e767SBrooks Davisnormally
4818269e767SBrooks Davis.Xr init 8 .
4828269e767SBrooks Davis.It Process Group
4838269e767SBrooks DavisEach active process is a member of a process group that is identified by
4848269e767SBrooks Davisa non-negative integer called the process group ID.
4858269e767SBrooks DavisThis is the process
4868269e767SBrooks DavisID of the group leader.
487*9e8df790SAlexander ZiaeeThis grouping permits the signaling of related processes
488*9e8df790SAlexander Ziaee.Pq see Xr termios 4
4898269e767SBrooks Davisand the job control mechanisms of
4908269e767SBrooks Davis.Xr csh 1 .
4918269e767SBrooks Davis.It Session
4928269e767SBrooks DavisA session is a set of one or more process groups.
4938269e767SBrooks DavisA session is created by a successful call to
4948269e767SBrooks Davis.Xr setsid 2 ,
4958269e767SBrooks Daviswhich causes the caller to become the only member of the only process
4968269e767SBrooks Davisgroup in the new session.
4978269e767SBrooks Davis.It Session leader
4988269e767SBrooks DavisA process that has created a new session by a successful call to
4998269e767SBrooks Davis.Xr setsid 2 ,
5008269e767SBrooks Davisis known as a session leader.
501*9e8df790SAlexander ZiaeeOnly a session leader may acquire a terminal as its controlling terminal
502*9e8df790SAlexander Ziaee.Pq see Xr termios 4 .
5038269e767SBrooks Davis.It Controlling process
5048269e767SBrooks DavisA session leader with a controlling terminal is a controlling process.
5058269e767SBrooks Davis.It Controlling terminal
5068269e767SBrooks DavisA terminal that is associated with a session is known as the controlling
5078269e767SBrooks Davisterminal for that session and its members.
508*9e8df790SAlexander Ziaee.It Terminal Process Group ID
5098269e767SBrooks DavisA terminal may be acquired by a session leader as its controlling terminal.
5108269e767SBrooks DavisOnce a terminal is associated with a session, any of the process groups
5118269e767SBrooks Daviswithin the session may be placed into the foreground by setting
5128269e767SBrooks Davisthe terminal process group ID to the ID of the process group.
5138269e767SBrooks DavisThis facility is used
514*9e8df790SAlexander Ziaeeto arbitrate between multiple jobs contending for the same terminal
515*9e8df790SAlexander Ziaee.Pq see Xr csh 1 and Xr tty 4 .
516*9e8df790SAlexander Ziaee.It Orphaned Process Group
5178269e767SBrooks DavisA process group is considered to be
5188269e767SBrooks Davis.Em orphaned
5198269e767SBrooks Davisif it is not under the control of a job control shell.
5208269e767SBrooks DavisMore precisely, a process group is orphaned
5218269e767SBrooks Daviswhen none of its members has a parent process that is in the same session
5228269e767SBrooks Davisas the group,
5238269e767SBrooks Davisbut is in a different process group.
5248269e767SBrooks DavisNote that when a process exits, the parent process for its children
5258269e767SBrooks Davisis normally changed to be
5268269e767SBrooks Davis.Xr init 8 ,
5278269e767SBrooks Daviswhich is in a separate session.
5288269e767SBrooks DavisNot all members of an orphaned process group are necessarily orphaned
529*9e8df790SAlexander Ziaeeprocesses
530*9e8df790SAlexander Ziaee.Pq those whose creating process has exited .
5318269e767SBrooks DavisThe process group of a session leader is orphaned by definition.
532*9e8df790SAlexander Ziaee.It Real User ID and Real Group ID
5338269e767SBrooks DavisEach user on the system is identified by a positive integer
5348269e767SBrooks Davistermed the real user ID.
5358269e767SBrooks Davis.Pp
5368269e767SBrooks DavisEach user is also a member of one or more groups.
5378269e767SBrooks DavisOne of these groups is distinguished from others and
5388269e767SBrooks Davisused in implementing accounting facilities.
5398269e767SBrooks DavisThe positive
5408269e767SBrooks Davisinteger corresponding to this distinguished group is termed
5418269e767SBrooks Davisthe real group ID.
5428269e767SBrooks Davis.Pp
5438269e767SBrooks DavisAll processes have a real user ID and real group ID.
5448269e767SBrooks DavisThese are initialized from the equivalent attributes
5458269e767SBrooks Davisof the process that created it.
546*9e8df790SAlexander Ziaee.It Effective User Id, Effective Group Id, and Group Access List
5478269e767SBrooks DavisAccess to system resources is governed by two values:
5488269e767SBrooks Davisthe effective user ID, and the group access list.
5498269e767SBrooks DavisThe first member of the group access list is also known as the
5508269e767SBrooks Daviseffective group ID.
551*9e8df790SAlexander ZiaeeIn POSIX.1, the group access list is known as the set of supplementary
5528269e767SBrooks Davisgroup IDs, and it is unspecified whether the effective group ID is
553*9e8df790SAlexander Ziaeea member of the list.
5548269e767SBrooks Davis.Pp
5558269e767SBrooks DavisThe effective user ID and effective group ID are initially the
5568269e767SBrooks Davisprocess's real user ID and real group ID respectively.
5578269e767SBrooks DavisEither
558*9e8df790SAlexander Ziaeemay be modified through execution of a set-user-ID or set-group-ID file
559*9e8df790SAlexander Ziaee.Pq possibly by one its ancestors
560*9e8df790SAlexander Ziaee.Pq see Xr execve 2 .
561*9e8df790SAlexander ZiaeeBy convention, the effective group ID
562*9e8df790SAlexander Ziaee.Pq the first member of the group access list
563*9e8df790SAlexander Ziaeeis duplicated, so that the execution of a set-group-ID program
564*9e8df790SAlexander Ziaeedoes not result in the loss of the original
565*9e8df790SAlexander Ziaee.Pq real
566*9e8df790SAlexander Ziaeegroup ID.
5678269e767SBrooks Davis.Pp
5688269e767SBrooks DavisThe group access list is a set of group IDs
5698269e767SBrooks Davisused only in determining resource accessibility.
5708269e767SBrooks DavisAccess checks
5718269e767SBrooks Davisare performed as described below in ``File Access Permissions''.
572*9e8df790SAlexander Ziaee.It Saved Set User ID and Saved Set Group ID
5738269e767SBrooks DavisWhen a process executes a new file, the effective user ID is set
5748269e767SBrooks Davisto the owner of the file if the file is set-user-ID, and the effective
575*9e8df790SAlexander Ziaeegroup ID
576*9e8df790SAlexander Ziaee.Pq first element of the group access list
577*9e8df790SAlexander Ziaeeis set to the group of the file if the file is set-group-ID.
5788269e767SBrooks DavisThe effective user ID of the process is then recorded as the saved set-user-ID,
5798269e767SBrooks Davisand the effective group ID of the process is recorded as the saved set-group-ID.
5808269e767SBrooks DavisThese values may be used to regain those values as the effective user
581*9e8df790SAlexander Ziaeeor group ID after reverting to the real ID
582*9e8df790SAlexander Ziaee.Pq see Xr setuid 2 .
583*9e8df790SAlexander ZiaeeIn POSIX.1, the saved set-user-ID and saved set-group-ID are optional,
5848269e767SBrooks Davisand are used in setuid and setgid, but this does not work as desired
585*9e8df790SAlexander Ziaeefor the super-user.
5868269e767SBrooks Davis.It Super-user
5878269e767SBrooks DavisA process is recognized as a
5888269e767SBrooks Davis.Em super-user
5898269e767SBrooks Davisprocess and is granted special privileges if its effective user ID is 0.
5908269e767SBrooks Davis.It Descriptor
5918269e767SBrooks DavisAn integer assigned by the system when a file is referenced
5928269e767SBrooks Davisby
5938269e767SBrooks Davis.Xr open 2
5948269e767SBrooks Davisor
5958269e767SBrooks Davis.Xr dup 2 ,
5968269e767SBrooks Davisor when a socket is created by
5978269e767SBrooks Davis.Xr pipe 2 ,
5988269e767SBrooks Davis.Xr socket 2
5998269e767SBrooks Davisor
6008269e767SBrooks Davis.Xr socketpair 2 ,
6018269e767SBrooks Daviswhich uniquely identifies an access path to that file or socket from
6028269e767SBrooks Davisa given process or any of its children.
6038269e767SBrooks Davis.It File Name
6048269e767SBrooks DavisNames consisting of up to
6058269e767SBrooks Davis.Brq Dv NAME_MAX
6068269e767SBrooks Davischaracters may be used to name
6078269e767SBrooks Davisan ordinary file, special file, or directory.
6088269e767SBrooks Davis.Pp
6098269e767SBrooks DavisThese characters may be arbitrary eight-bit values,
6108269e767SBrooks Davisexcluding
6118269e767SBrooks Davis.Dv NUL
612*9e8df790SAlexander Ziaee.Pq ASCII 0
613*9e8df790SAlexander Ziaeeand the
6148269e767SBrooks Davis.Ql \&/
615*9e8df790SAlexander Ziaeecharacter
616*9e8df790SAlexander Ziaee.Pq slash, ASCII 47 .
6178269e767SBrooks Davis.Pp
6188269e767SBrooks DavisNote that it is generally unwise to use
6198269e767SBrooks Davis.Ql \&* ,
6208269e767SBrooks Davis.Ql \&? ,
6218269e767SBrooks Davis.Ql \&[
6228269e767SBrooks Davisor
6238269e767SBrooks Davis.Ql \&]
6248269e767SBrooks Davisas part of
6258269e767SBrooks Davisfile names because of the special meaning attached to these characters
6268269e767SBrooks Davisby the shell.
6278269e767SBrooks Davis.It Path Name
6288269e767SBrooks DavisA path name is a
6298269e767SBrooks Davis.Dv NUL Ns -terminated
6308269e767SBrooks Davischaracter string starting with an
6318269e767SBrooks Davisoptional slash
6328269e767SBrooks Davis.Ql \&/ ,
6338269e767SBrooks Davisfollowed by zero or more directory names separated
6348269e767SBrooks Davisby slashes, optionally followed by a file name.
6358269e767SBrooks DavisThe total length of a path name must be less than
6368269e767SBrooks Davis.Brq Dv PATH_MAX
6378269e767SBrooks Davischaracters.
638*9e8df790SAlexander ZiaeeOn some systems, this limit may be infinite.
6398269e767SBrooks Davis.Pp
6408269e767SBrooks DavisIf a path name begins with a slash, the path search begins at the
6418269e767SBrooks Davis.Em root
6428269e767SBrooks Davisdirectory.
6438269e767SBrooks DavisOtherwise, the search begins from the current working directory.
6448269e767SBrooks DavisA slash by itself names the root directory.
6458269e767SBrooks DavisAn empty
6468269e767SBrooks Davispathname refers to the current directory.
6478269e767SBrooks Davis.It Directory
6488269e767SBrooks DavisA directory is a special type of file that contains entries
6498269e767SBrooks Davisthat are references to other files.
6508269e767SBrooks DavisDirectory entries are called links.
6518269e767SBrooks DavisBy convention, a directory
6528269e767SBrooks Daviscontains at least two links,
6538269e767SBrooks Davis.Ql .\&
6548269e767SBrooks Davisand
6558269e767SBrooks Davis.Ql \&.. ,
6568269e767SBrooks Davisreferred to as
6578269e767SBrooks Davis.Em dot
6588269e767SBrooks Davisand
6598269e767SBrooks Davis.Em dot-dot
6608269e767SBrooks Davisrespectively.
6618269e767SBrooks DavisDot refers to the directory itself and
6628269e767SBrooks Davisdot-dot refers to its parent directory.
663*9e8df790SAlexander Ziaee.It Root Directory and Current Working Directory
6648269e767SBrooks DavisEach process has associated with it a concept of a root directory
6658269e767SBrooks Davisand a current working directory for the purpose of resolving path
6668269e767SBrooks Davisname searches.
6678269e767SBrooks DavisA process's root directory need not be the root
6688269e767SBrooks Davisdirectory of the root file system.
6698269e767SBrooks Davis.It File Access Permissions
6708269e767SBrooks DavisEvery file in the file system has a set of access permissions.
6718269e767SBrooks DavisThese permissions are used in determining whether a process
672*9e8df790SAlexander Ziaeemay perform a requested operation on the file
673*9e8df790SAlexander Ziaee.Pq such as opening a file for writing .
6748269e767SBrooks DavisAccess permissions are established at the
6758269e767SBrooks Davistime a file is created.
6768269e767SBrooks DavisThey may be changed at some later time
6778269e767SBrooks Davisthrough the
6788269e767SBrooks Davis.Xr chmod 2
6798269e767SBrooks Daviscall.
6808269e767SBrooks Davis.Pp
6818269e767SBrooks DavisFile access is broken down according to whether a file may be: read,
6828269e767SBrooks Daviswritten, or executed.
6838269e767SBrooks DavisDirectory files use the execute
6848269e767SBrooks Davispermission to control if the directory may be searched.
6858269e767SBrooks Davis.Pp
6868269e767SBrooks DavisFile access permissions are interpreted by the system as
6878269e767SBrooks Davisthey apply to three different classes of users: the owner
6888269e767SBrooks Davisof the file, those users in the file's group, anyone else.
6898269e767SBrooks DavisEvery file has an independent set of access permissions for
6908269e767SBrooks Daviseach of these classes.
6918269e767SBrooks DavisWhen an access check is made, the system
6928269e767SBrooks Davisdecides if permission should be granted by checking the access
6938269e767SBrooks Davisinformation applicable to the caller.
6948269e767SBrooks Davis.Pp
6958269e767SBrooks DavisRead, write, and execute/search permissions on
6968269e767SBrooks Davisa file are granted to a process if:
6978269e767SBrooks Davis.Pp
6988269e767SBrooks DavisThe process's effective user ID is that of the super-user.
699*9e8df790SAlexander ZiaeeNote that even the super-user cannot execute a non-executable file.
7008269e767SBrooks Davis.Pp
7018269e767SBrooks DavisThe process's effective user ID matches the user ID of the owner
7028269e767SBrooks Davisof the file and the owner permissions allow the access.
7038269e767SBrooks Davis.Pp
7048269e767SBrooks DavisThe process's effective user ID does not match the user ID of the
7058269e767SBrooks Davisowner of the file, and either the process's effective
7068269e767SBrooks Davisgroup ID matches the group ID
7078269e767SBrooks Davisof the file, or the group ID of the file is in
7088269e767SBrooks Davisthe process's group access list,
7098269e767SBrooks Davisand the group permissions allow the access.
7108269e767SBrooks Davis.Pp
7118269e767SBrooks DavisNeither the effective user ID nor effective group ID
7128269e767SBrooks Davisand group access list of the process
7138269e767SBrooks Davismatch the corresponding user ID and group ID of the file,
7148269e767SBrooks Davisbut the permissions for ``other users'' allow access.
7158269e767SBrooks Davis.Pp
7168269e767SBrooks DavisOtherwise, permission is denied.
7178269e767SBrooks Davis.It Sockets and Address Families
7188269e767SBrooks DavisA socket is an endpoint for communication between processes.
7198269e767SBrooks DavisEach socket has queues for sending and receiving data.
7208269e767SBrooks Davis.Pp
7218269e767SBrooks DavisSockets are typed according to their communications properties.
7228269e767SBrooks DavisThese properties include whether messages sent and received
7238269e767SBrooks Davisat a socket require the name of the partner, whether communication
7248269e767SBrooks Davisis reliable, the format used in naming message recipients, etc.
7258269e767SBrooks Davis.Pp
7268269e767SBrooks DavisEach instance of the system supports some
7278269e767SBrooks Daviscollection of socket types; consult
7288269e767SBrooks Davis.Xr socket 2
7298269e767SBrooks Davisfor more information about the types available and
7308269e767SBrooks Davistheir properties.
7318269e767SBrooks Davis.Pp
7328269e767SBrooks DavisEach instance of the system supports some number of sets of
7338269e767SBrooks Daviscommunications protocols.
7348269e767SBrooks DavisEach protocol set supports addresses
7358269e767SBrooks Davisof a certain format.
7368269e767SBrooks DavisAn Address Family is the set of addresses
7378269e767SBrooks Davisfor a specific group of protocols.
7388269e767SBrooks DavisEach socket has an address
7398269e767SBrooks Davischosen from the address family in which the socket was created.
7408269e767SBrooks Davis.El
7418269e767SBrooks Davis.Sh SEE ALSO
7428269e767SBrooks Davis.Xr intro 3 ,
7438269e767SBrooks Davis.Xr perror 3
744bcc57e97SAlexander Ziaee.Sh HISTORY
745bcc57e97SAlexander ZiaeeThe
746bcc57e97SAlexander Ziaee.Nm Ns Pq 2
747bcc57e97SAlexander Ziaeemanual page first appeared in
748bcc57e97SAlexander Ziaee.At v5 .
749