int
.
When a system call detects an error, it returns an integer value indicating failure (usually -1) and sets the variable errno accordingly. (This allows interpretation of the failure on receiving a -1 and to take action accordingly.) Successful calls never set errno; once set, it remains until another error occurs. It should only be examined after an error has been reported, because otherwise a leftover value from some previous error may be found instead. errno on return, in the same fashion. In these cases a nonzero value may be left in errno even up- on successful return if some internal action failed. (Many library functions that are not system calls also set)
The manual page for each system call will list some of the common errno codes that system call can return, but that should not be considered an exhaustive list, i.e. a properly written program should be able to gracefully recover from any error that a system call might return. Documenting all the error codes that a system call can return in a more specification-like manner would take more resources than this project has available.
Note also that a number of system calls overload the meanings of these error numbers, and that in these cases the meanings must be interpreted according to the type and circumstances of the call.
The following is a complete list of the errors and their
names as given in
<errno.h
>.
0
Error 0
1
EPERM
Operation not permitted
2
ENOENT
No such file or directory
3
ESRCH
No such process
4
EINTR
Interrupted function call
SIGINT
or
SIGQUIT
)
was caught by the process 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.
5
EIO
Input/output error
6
ENXIO
Device not configured
7
E2BIG
Arg list too long
ARG_MAX
in
<
sys/syslimits.h
>).
8
ENOEXEC
Exec format error
9
EBADF
Bad file descriptor
10
ECHILD
No child processes
11
EDEADLK
Resource deadlock avoided
12
ENOMEM
Cannot allocate memory
13
EACCES
Permission denied
14
EFAULT
Bad address
15
ENOTBLK
Block device required
16
EBUSY
Resource busy
17
EEXIST
File exists
18
EXDEV
Improper link
19
ENODEV
Operation not supported by device
20
ENOTDIR
Not a directory
21
EISDIR
Is a directory
22
EINVAL
Invalid argument
23
ENFILE
Too many open files in system
24
EMFILE
Too many open files
25
ENOTTY
Inappropriate ioctl for device
26
ETXTBSY
Text file busy
27
EFBIG
File too large
28
ENOSPC
Device out of space
29
ESPIPE
Illegal seek
30
EROFS
Read-only file system
31
EMLINK
Too many links
32
EPIPE
Broken pipe
33
EDOM
Numerical argument out of domain
34
ERANGE
Result too large or too small
35
EAGAIN
Resource temporarily unavailable
36
EINPROGRESS
Operation now in progress
37
EALREADY
Operation already in progress
38
ENOTSOCK
Socket operation on non-socket
39
EDESTADDRREQ
Destination address required
40
EMSGSIZE
Message too long
41
EPROTOTYPE
Protocol wrong type for socket
SOCK_STREAM
.
42
ENOPROTOOPT
Protocol option not available
43
EPROTONOSUPPORT
Protocol not supported
44
ESOCKTNOSUPPORT
Socket type not supported
45
EOPNOTSUPP
Operation not supported
46
EPFNOSUPPORT
Protocol family not supported
47
EAFNOSUPPORT
Address family not supported by protocol family
48
EADDRINUSE
Address already in use
49
EADDRNOTAVAIL
Cannot assign requested address
50
ENETDOWN
Network is down
51
ENETUNREACH
Network is unreachable
52
ENETRESET
Network dropped connection on reset
53
ECONNABORTED
Software caused connection abort
54
ECONNRESET
Connection reset by peer
55
ENOBUFS
No buffer space available
56
EISCONN
Socket is already connected
57
ENOTCONN
Socket is not connected
58
ESHUTDOWN
Cannot send after socket shutdown
60
ETIMEDOUT
Operation timed out
61
ECONNREFUSED
Connection refused
62
ELOOP
Too many levels of symbolic links
MAXSYMLINKS
)
symbolic links.
63
ENAMETOOLONG
File name too long
MAXNAMELEN
)
characters, or an entire
path name exceeded 1023
(
MAXPATHLEN
-1)
characters.
64
EHOSTDOWN
Host is down
65
EHOSTUNREACH
No route to host
66
ENOTEMPTY
Directory not empty
67
EPROCLIM
Too many processes
68
EUSERS
Too many users
69
EDQUOT
Disc quota exceeded
70
ESTALE
Stale NFS file handle
72
EBADRPC
RPC struct is bad
73
ERPCMISMATCH
RPC version wrong
74
EPROGUNAVAIL
RPC prog. not avail
75
EPROGMISMATCH
Program version wrong
76
EPROCUNAVAIL
Bad procedure for program
77
ENOLCK
No locks available
78
ENOSYS
Function not implemented
79
EFTYPE
Inappropriate file type or format
80
EAUTH
Authentication error
81
ENEEDAUTH
Need authenticator
82
EIDRM
Identifier removed
83
ENOMSG
No message of the desired type
84
EOVERFLOW
Value too large to be stored in data type
85
EILSEQ
Illegal byte sequence
86
ENOTSUP
Not supported
87
ECANCELED
Operation canceled
88
EBADMSG
Bad or corrupt message
89
ENODATA
No message available
90
ENOSR
No STREAM resources
91
ENOSTR
Not a STREAM
92
ETIME
STREAM ioctl timeout
93
ENOATTR
Attribute not found
94
EMULTIHOP
Multihop attempted
95
ENOLINK
Link has been severed
96
EPROTO
Protocol errorEach 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.
All processes have a real user ID and real group ID. These are initialized from the equivalent attributes of the process that created it.
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 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.
The group access list is a set of group IDs used only in determining resource accessibility. Access checks are performed as described below in "File Access Permissions.
There are more machine-dependent kernel threads allocated by different drivers. See the specific driver manual pages for more information.
MAXNAMELEN
)
characters may be used to name
an ordinary file, special file, or directory.
These characters may be selected from the set of all ASCII character excluding 0 (NUL) and the ASCII code for `/' (slash). (The parity bit, bit 7, must be 0).
Note that it is generally unwise to use `*', `?', `[' or `]' as part of file names because of the special meaning attached to these characters by the shell.
MAXPATHLEN
)
characters.
If a path name begins with a slash, the path search begins at the root directory. Otherwise, the search begins from the current working directory. A slash by itself names the root directory. An empty string is not a valid pathname.
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.
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.
Read, write, and execute/search permissions on a file are granted to a process if:
The process's effective user ID is that of the super-user. (Note: even the super-user cannot execute a non-executable file).
The process's effective user ID matches the user ID of the owner of the file and the owner permissions allow the access.
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.
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 ``other users'' allow access.
Otherwise, permission is denied.
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.
Each instance of the system supports some collection of socket types; consult socket(2) for more information about the types available and their properties.
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.
AT&T UNIX
.