|
|
1.1 root 1: .\" Copyright (c) 1980,1983,1986 Regents of the University of California.
2: .\" All rights reserved. The Berkeley software License Agreement
3: .\" specifies the terms and conditions for redistribution.
4: .\"
5: .\" @(#)intro.2 6.10 (Berkeley) 6/30/90
6: .\"
7: .TH INTRO 2 "June 30, 1990"
8: .UC 4
9: .de en
10: .HP
11: \\$1 \\$2 \\$3
12: .br
13: ..
14: .SH NAME
15: intro \- introduction to system calls and error numbers
16: .SH SYNOPSIS
17: .B #include <sys/errno.h>
18: .SH DESCRIPTION
19: This section provides an overview of the system calls,
20: their error returns, and other common definitions and concepts.
21: .\".LP
22: .\".B "System call restart"
23: .\".PP
24: .\"<more later...>
25: .SH DIAGNOSTICS
26: Most of these calls have one or more error returns.
27: An error condition is indicated by an otherwise impossible return
28: value. This is almost always \-1; the individual descriptions
29: specify the details.
30: Note that a number of system calls overload the meanings of these
31: error numbers, and that the meanings must be interpreted according
32: to the type and circumstances of the call.
33: .PP
34: As with normal arguments, all return codes and values from
35: functions are of type integer unless otherwise noted.
36: An error number is also made available in the external
37: variable \fIerrno\fP, which is not cleared
38: on successful calls.
39: Thus \fIerrno\fP should be tested only after an error has occurred.
40: .PP
41: The following is a complete list of the errors and their
42: names as given in
43: .RI < sys/errno.h >.
44: .en 0 \h'\w'EIO'u' "Error 0
45: Unused.
46: .en 1 EPERM "Operation not permitted
47: Typically this error indicates
48: an attempt to modify a file in some way forbidden
49: except to its owner or super-user.
50: It is also returned for attempts
51: by ordinary users to do things
52: allowed only to the super-user.
53: .en 2 ENOENT "No such file or directory
54: This error occurs when a file name is specified
55: and the file should exist but doesn't, or when one
56: of the directories in a path name does not exist.
57: .en 3 ESRCH "No such process
58: The process or process group whose number was given
59: does not exist, or any such process is already dead.
60: .en 4 EINTR "Interrupted system call
61: An asynchronous signal (such as interrupt or quit)
62: that the user has elected to catch
63: occurred during a system call.
64: If execution is resumed
65: after processing the signal
66: and the system call is not restarted,
67: it will appear as if the interrupted system call
68: returned this error condition.
69: .en 5 EIO "Input/output error
70: Some physical I/O error occurred during a
71: .I read
72: or
73: .IR write .
74: This error may in some cases occur
75: on a call following the one to which it actually applies.
76: .en 6 ENXIO "Device not configured
77: I/O on a special file refers to a subdevice that does not
78: exist,
79: or beyond the limits of the device.
80: It may also occur when, for example, an illegal tape drive
81: unit number is selected
82: or a disk pack is not loaded on a drive.
83: .en 7 E2BIG "Argument list too long
84: An argument list longer than 20480 bytes (or the current limit, NCARGS in
85: .IR <sys/param.h> )
86: is presented to
87: .IR execve .
88: .en 8 ENOEXEC "Exec format error
89: A request is made to execute a file
90: that, although it has the appropriate permissions,
91: does not start with a valid magic number, (see
92: .IR a.out (5)).
93: .en 9 EBADF "Bad file descriptor
94: Either a file descriptor refers to no
95: open file,
96: or a read (resp. write) request is made to
97: a file that is open only for writing (resp. reading).
98: .en 10 ECHILD "No child processes
99: .I Wait
100: and the process has no
101: living or unwaited-for children.
102: .en 11 EDEADLK "Resource deadlock avoided
103: An attempt was made to lock a system resource that
104: would have resulted in a deadlock situation.
105: .en 12 ENOMEM "Cannnot allocate memory
106: During an
107: .I execve
108: or
109: .I break,
110: a program asks for more core or swap space than the system is
111: able to supply,
112: or a process size limit would be exceeded.
113: A lack of swap space is normally a temporary condition; however,
114: a lack of core
115: is not a temporary condition; the maximum size
116: of the text, data, and stack segments is a system parameter.
117: Soft limits may be increased to their corresponding hard limits.
118: .en 13 EACCES "Permission denied
119: An attempt was made to access a file in a way forbidden
120: by the protection system.
121: .en 14 EFAULT "Bad address
122: The system encountered a hardware fault in attempting to
123: access the arguments of a system call.
124: .en 15 ENOTBLK "Block device required
125: A plain file was mentioned where a block device was required,
126: e.g., in
127: .IR mount .
128: .en 16 EBUSY "Device busy
129: An attempt to mount a device that was already mounted or
130: an attempt was made to dismount a device
131: on which there is an active file
132: (open file, current directory, mounted-on file, or active text segment).
133: A request was made to an exclusive access device that was already in use.
134: .en 17 EEXIST "File exists
135: An existing file was mentioned in an inappropriate context,
136: e.g.,
137: .IR link .
138: .en 18 EXDEV "Cross-device link
139: A hard link to a file on another device
140: was attempted.
141: .en 19 ENODEV "Operation not supported by device
142: An attempt was made to apply an inappropriate
143: system call to a device,
144: e.g., to read a write-only device,
145: or the device is not configured by the system.
146: .en 20 ENOTDIR "Not a directory
147: A non-directory was specified where a directory
148: is required,
149: for example, in a path name or
150: as an argument to
151: .IR chdir .
152: .en 21 EISDIR "Is a directory
153: An attempt to write on a directory.
154: .en 22 EINVAL "Invalid argument
155: Some invalid argument:
156: dismounting a non-mounted
157: device,
158: mentioning an unknown signal in
159: .I signal,
160: or some other argument inappropriate for the call.
161: Also set by math functions, (see
162: .IR math (3)).
163: .en 23 ENFILE "Too many open files in system
164: The system's table of open files is full,
165: and temporarily no more
166: .I opens
167: can be accepted.
168: .en 24 EMFILE "Too many open files
169: As released, the limit on the number of
170: open files per process is 64.
171: .IR Getdtablesize (2)
172: will obtain the current limit.
173: Customary configuration limit on most other UNIX systems
174: is 20 per process.
175: .en 25 ENOTTY "Inappropriate ioctl for device
176: The file mentioned in an
177: .I ioctl
178: is not a terminal or one of the
179: devices to which this call applies.
180: .en 26 ETXTBSY "Text file busy
181: An attempt to execute a pure-procedure
182: program that is currently open for writing.
183: Also an attempt to open for writing a pure-procedure
184: program that is being executed.
185: .en 27 EFBIG "File too large
186: The size of a file exceeded the maximum (about
187: .if t 2\u\s-231\s+2\d
188: .if n 2.1E9
189: bytes).
190: .en 28 ENOSPC "No space left on device
191: A
192: .I write
193: to an ordinary file, the creation of a
194: directory or symbolic link, or the creation of a directory
195: entry failed because no more disk blocks are available
196: on the file system, or the allocation of an inode for a newly
197: created file failed because no more inodes are available
198: on the file system.
199: .en 29 ESPIPE "Illegal seek
200: An
201: .I lseek
202: was issued to a socket or pipe.
203: This error may also be issued for
204: other non-seekable devices.
205: .en 30 EROFS "Read-only file system
206: An attempt to modify a file or directory
207: was made
208: on a device mounted read-only.
209: .en 31 EMLINK "Too many links
210: An attempt to make more than 32767 hard links to a file.
211: .en 32 EPIPE "Broken pipe
212: A write on a pipe or socket for which there is no process
213: to read the data.
214: This condition normally generates a signal;
215: the error is returned if the signal is caught or ignored.
216: .en 33 EDOM "Numerical argument out of domain
217: The argument of a function in the math package (3M)
218: is out of the domain of the function.
219: .en 34 ERANGE "Numerical result out of range
220: The value of a function in the math package (3M)
221: is unrepresentable within machine precision.
222: .en 35 EAGAIN "Resource temporarily unavailable
223: This is a temporary condition and later calls to the
224: same routine may complete normally.
225: .en 36 EINPROGRESS "Operation now in progress"
226: An operation that takes a long time to complete (such as
227: a \fIconnect\fP(2)) was attempted on a non-blocking object (see
228: \fIfcntl\fP(2)).
229: .en 37 EALREADY "Operation already in progress"
230: An operation was attempted on a non-blocking object that already
231: had an operation in progress.
232: .en 38 ENOTSOCK "Socket operation on non-socket"
233: Self-explanatory.
234: .en 39 EDESTADDRREQ "Destination address required"
235: A required address was omitted from an operation on a socket.
236: .en 40 EMSGSIZE "Message too long"
237: A message sent on a socket was larger than the internal message buffer
238: or some other network limit.
239: .en 41 EPROTOTYPE "Protocol wrong type for socket"
240: A protocol was specified that does not support the semantics of the
241: socket type requested. For example, you cannot use the ARPA Internet
242: UDP protocol with type SOCK_STREAM.
243: .en 42 ENOPROTOOPT "Protocol not available
244: A bad option or level was specified in a
245: .IR getsockopt (2)
246: or
247: .IR setsockopt (2)
248: call.
249: .en 43 EPROTONOSUPPORT "Protocol not supported"
250: The protocol has not been configured into the
251: system or no implementation for it exists.
252: .en 44 ESOCKTNOSUPPORT "Socket type not supported"
253: The support for the socket type has not been configured into the
254: system or no implementation for it exists.
255: .en 45 EOPNOTSUPP "Operation not supported on socket"
256: For example, trying to \fIaccept\fP a connection on a datagram socket.
257: .en 46 EPFNOSUPPORT "Protocol family not supported"
258: The protocol family has not been configured into the
259: system or no implementation for it exists.
260: .en 47 EAFNOSUPPORT "Address family not supported by protocol family"
261: An address incompatible with the requested protocol was used.
262: For example, you shouldn't necessarily expect to be able to use NS
263: addresses with ARPA Internet protocols.
264: .en 48 EADDRINUSE "Address already in use"
265: Only one usage of each address is normally permitted.
266: .en 49 EADDRNOTAVAIL "Can't assign requested address"
267: Normally results from an attempt to create a socket with an
268: address not on this machine.
269: .en 50 ENETDOWN "Network is down"
270: A socket operation encountered a dead network.
271: .en 51 ENETUNREACH "Network is unreachable"
272: A socket operation was attempted to an unreachable network.
273: .en 52 ENETRESET "Network dropped connection on reset"
274: The host you were connected to crashed and rebooted.
275: .en 53 ECONNABORTED "Software caused connection abort"
276: A connection abort was caused internal to your host machine.
277: .en 54 ECONNRESET "Connection reset by peer"
278: A connection was forcibly closed by a peer. This normally
279: results from a loss of the connection on the remote socket
280: due to a timeout or a reboot.
281: .en 55 ENOBUFS "No buffer space available"
282: An operation on a socket or pipe was not performed because
283: the system lacked sufficient buffer space or because a queue was full.
284: .en 56 EISCONN "Socket is already connected"
285: A
286: .I connect
287: request was made on an already connected socket; or,
288: a
289: .I sendto
290: or
291: .I sendmsg
292: request on a connected socket specified a destination
293: when already connected.
294: .en 57 ENOTCONN "Socket is not connected"
295: An request to send or receive data was disallowed because
296: the socket is not connected and (when sending on a datagram socket)
297: no address was supplied.
298: .en 58 ESHUTDOWN "Can't send after socket shutdown"
299: A request to send data was disallowed because the socket
300: had already been shut down with a previous
301: .IR shutdown (2)
302: call.
303: .en 60 ETIMEDOUT "Connection timed out"
304: A
305: .I connect
306: or
307: .I send
308: request failed because the connected party did not
309: properly respond after a period of time. (The timeout
310: period is dependent on the communication protocol.)
311: .en 61 ECONNREFUSED "Connection refused"
312: No connection could be made because the target machine actively
313: refused it. This usually results from trying to connect
314: to a service that is inactive on the foreign host.
315: .en 62 ELOOP "Too many levels of symbolic links"
316: A path name lookup involved more than 8 symbolic links.
317: .en 63 ENAMETOOLONG "File name too long"
318: A component of a path name exceeded 255 (MAXNAMELEN) characters, or an entire
319: path name exceeded 1023 (MAXPATHLEN-1) characters.
320: .en 64 EHOSTDOWN "Host is down"
321: A socket operation failed because the destination host was down.
322: .en 65 EHOSTUNREACH "No route to host"
323: A socket operation was attempted to an unreachable host.
324: .en 66 ENOTEMPTY "Directory not empty"
325: A directory with entries other than \*(lq.\*(rq and \*(lq..\*(rq
326: was supplied to a remove directory or rename call.
327: .en 67 EPROCLIM "Too many processes"
328: .en 68 EUSERS "Too many users"
329: The quota system ran out of table entries.
330: .en 69 EDQUOT "Disc quota exceeded"
331: A
332: .I write
333: to an ordinary file, the creation of a
334: directory or symbolic link, or the creation of a directory
335: entry failed because the user's quota of disk blocks was
336: exhausted, or the allocation of an inode for a newly
337: created file failed because the user's quota of inodes
338: was exhausted.
339: .en 70 ESTALE "Stale NFS file handle"
340: An attempt was made to access an open file (on an NFS filesystem)
341: which is now unavailable as referenced by the file descriptor.
342: This may indicate the file was deleted on the NFS server and some
343: other catastrophic event occured.
344: .en 72 EBADRPC "RPC struct is bad"
345: Exchange of RPC information was unsuccessful.
346: .en 73 ERPCMISMATCH "RPC version wrong"
347: The version of RPC on the remote peer is not compatible with
348: the local version.
349: .en 74 EPROGUNAVAIL "RPC prog. not avail"
350: The requested program is not registered on the remote host.
351: .en 75 EPROGMISMATCH "Program version wrong"
352: The requested version of the program is not available
353: on the remote host (RPC).
354: .en 76 EPROCUNAVAIL "Bad procedure for program"
355: An RPC call was attempted for a procedure which doesn't exist
356: in the remote program.
357: .en 77 ENOLCK "No locks available"
358: A system-imposed limit on the number of simultaneous file
359: locks was reached.
360: .en 78 ENOSYS "Function not implemented"
361: Attempted a system call that is not available on this
362: system.
363: .SH DEFINITIONS
364: .TP 5
365: Process ID
366: .br
367: Each active process in the system is uniquely identified by a positive
368: integer called a process ID. The range of this ID is from 0 to 30000.
369: .TP 5
370: Parent process ID
371: .br
372: A new process is created by a currently active process; (see
373: .IR fork (2)).
374: The parent process ID of a process is the process ID of its creator.
375: .TP 5
376: Process Group ID
377: .br
378: Each active process is a member of a process group that is identified by
379: a positive integer called the process group ID. This is the process
380: ID of the group leader. This grouping permits the signaling of related
381: processes (see
382: .IR killpg (2))
383: and the job control mechanisms of
384: .IR csh (1).
385: .TP 5
386: Tty Group ID
387: .br
388: Each active process can be a member of a terminal group that is identified
389: by a positive integer called the tty group ID. This grouping is used
390: to arbitrate between multiple jobs contending for the same terminal;
391: (see
392: .IR csh (1)
393: and
394: .IR tty (4)).
395: .TP 5
396: Real User ID and Real Group ID
397: .br
398: Each user on the system is identified by a positive integer
399: termed the real user ID.
400: .IP
401: Each user is also a member of one or more groups.
402: One of these groups is distinguished from others and
403: used in implementing accounting facilities. The positive
404: integer corresponding to this distinguished group is termed
405: the real group ID.
406: .IP
407: All processes have a real user ID and real group ID.
408: These are initialized from the equivalent attributes
409: of the process that created it.
410: .TP 5
411: Effective User Id, Effective Group Id, and Access Groups
412: .br
413: Access to system resources is governed by three values:
414: the effective user ID, the effective group ID, and the
415: group access list.
416: .IP
417: The effective user ID and effective group ID are initially the
418: process's real user ID and real group ID respectively. Either
419: may be modified through execution of a set-user-ID or set-group-ID
420: file (possibly by one its ancestors) (see
421: .IR execve (2)).
422: .IP
423: The group access list is an additional set of group ID's
424: used only in determining resource accessibility. Access checks
425: are performed as described below in ``File Access Permissions''.
426: .TP 5
427: Super-user
428: .br
429: A process is recognized as a
430: .I super-user
431: process and is granted special privileges if its effective user ID is 0.
432: .TP 5
433: Special Processes
434: .br
435: The processes with a process ID's of 0, 1, and 2 are special.
436: Process 0 is the scheduler. Process 1 is the initialization process
437: .IR init ,
438: and is the ancestor of every other process in the system.
439: It is used to control the process structure.
440: Process 2 is the paging daemon.
441: .TP 5
442: Descriptor
443: .br
444: An integer assigned by the system when a file is referenced
445: by
446: .IR open (2)
447: or
448: .IR dup (2),
449: or when a socket is created by
450: .IR pipe (2),
451: .IR socket (2)
452: or
453: .IR socketpair (2),
454: which uniquely identifies an access path to that file or socket from
455: a given process or any of its children.
456: .TP 5
457: File Name
458: .br
459: Names consisting of up to 255 (MAXNAMELEN) characters may be used to name
460: an ordinary file, special file, or directory.
461: .IP
462: These characters may be selected from the set of all ASCII character
463: excluding 0 (null) and the ASCII code for / (slash). (The parity bit,
464: bit 8, must be 0.)
465: .IP
466: Note that it is generally unwise to use *, ?, [ or ] as part of
467: file names because of the special meaning attached to these characters
468: by the shell.
469: .TP 5
470: Path Name
471: .br
472: A path name is a null-terminated character string starting with an
473: optional slash (/), followed by zero or more directory names separated
474: by slashes, optionally followed by a file name.
475: The total length of a path name must be less than 1024 (MAXPATHLEN) characters.
476: .IP
477: If a path name begins with a slash, the path search begins at the
478: .I root
479: directory.
480: Otherwise, the search begins from the current working directory.
481: A slash by itself names the root directory. A null
482: pathname refers to the current directory.
483: .TP 5
484: Directory
485: .br
486: A directory is a special type of file that contains entries
487: that are references to other files.
488: Directory entries are called links. By convention, a directory
489: contains at least two links, . and .., referred to as
490: .I dot
491: and
492: .I dot-dot
493: respectively. Dot refers to the directory itself and
494: dot-dot refers to its parent directory.
495: .TP 5
496: Root Directory and Current Working Directory
497: .br
498: Each process has associated with it a concept of a root directory
499: and a current working directory for the purpose of resolving path
500: name searches. A process's root directory need not be the root
501: directory of the root file system.
502: .TP 5
503: File Access Permissions
504: .br
505: Every file in the file system has a set of access permissions.
506: These permissions are used in determining whether a process
507: may perform a requested operation on the file (such as opening
508: a file for writing). Access permissions are established at the
509: time a file is created. They may be changed at some later time
510: through the
511: .IR chmod (2)
512: call.
513: .IP
514: File access is broken down according to whether a file may be: read,
515: written, or executed. Directory files use the execute
516: permission to control if the directory may be searched.
517: .IP
518: File access permissions are interpreted by the system as
519: they apply to three different classes of users: the owner
520: of the file, those users in the file's group, anyone else.
521: Every file has an independent set of access permissions for
522: each of these classes. When an access check is made, the system
523: decides if permission should be granted by checking the access
524: information applicable to the caller.
525: .IP
526: Read, write, and execute/search permissions on
527: a file are granted to a process if:
528: .IP
529: The process's effective user ID is that of the super-user.
530: .IP
531: The process's effective user ID matches the user ID of the owner
532: of the file and the owner permissions allow the access.
533: .IP
534: The process's effective user ID does not match the user ID of the
535: owner of the file, and either the process's effective
536: group ID matches the group ID
537: of the file, or the group ID of the file is in
538: the process's group access list,
539: and the group permissions allow the access.
540: .IP
541: Neither the effective user ID nor effective group ID
542: and group access list of the process
543: match the corresponding user ID and group ID of the file,
544: but the permissions for ``other users'' allow access.
545: .IP
546: Otherwise, permission is denied.
547: .TP 5
548: Sockets and Address Families
549: .IP
550: A socket is an endpoint for communication between processes.
551: Each socket has queues for sending and receiving data.
552: .IP
553: Sockets are typed according to their communications properties.
554: These properties include whether messages sent and received
555: at a socket require the name of the partner, whether communication
556: is reliable, the format used in naming message recipients, etc.
557: .IP
558: Each instance of the system supports some
559: collection of socket types; consult
560: .IR socket (2)
561: for more information about the types available and
562: their properties.
563: .IP
564: Each instance of the system supports some number of sets of
565: communications protocols. Each protocol set supports addresses
566: of a certain format. An Address Family is the set of addresses
567: for a specific group of protocols. Each socket has an address
568: chosen from the address family in which the socket was created.
569: .SH SEE ALSO
570: intro(3), perror(3)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.