INTRO(2) COMMAND REFERENCE INTRO(2)
NAME
intro - introduction to system calls and error numbers
SYNOPSIS
#include <errno.h>
DESCRIPTION
This section describes all system calls. Most of these
calls have one or more error returns. An error condition is
indicated by an otherwise impossible return value; this is
almost always -1; the individual descriptions specify the
details.
As with normal arguments, all return codes and values from
functions are of type int unless otherwise noted. An error
number is also made available in the external variable
errno; errno is not cleared on successful calls, so it
should be tested only after an error has been indicated.
The following is a complete list of the errors and their
names as given in <errno.h>. Only these symbolic names for
error numbers should be used in programs, since the actual
value of the error number may vary with the implementation.
Certain implementations may contain extensions which prevent
some errors from ever occurring.
0 Unused
1 EPERM Not file owner or superuser
Typically this error indicates an attempt to modify a
file in some way forbidden by the file protection
codes; the error is also returned for attempts by
ordinary users to do things allowed only to the
superuser.
2 ENOENT No such file or directory
This error occurs when a file name is specified and the
file should exist but doesn't, when the specified file
is a symbolic link to a file or directory that does not
exist, or when one of the directories in a path name
does not exist.
3 ESRCH No such process
No such process can be found corresponding to that
specified by the process ID.
4 EINTR Interrupted system call
An asynchronous signal (such as interrupt or quit),
which the user has elected to catch, occurred during a
system call. If execution is resumed after processing
the signal, it appears as if the interrupted system
call returned this error condition.
Printed 4/6/89 1
INTRO(2) COMMAND REFERENCE INTRO(2)
5 EIO I/O error
Some physical I/O error occurred during a read or
write; this error may in some cases occur on a call
following the one to which it actually applies.
6 ENXIO No such device or address
I/O on a special file refers to a subdevice which does
not exist, or the file is beyond the limits of the
device. The error may also occur when, for example, a
tape drive is not online, or a disk pack is not loaded
on a drive.
7 E2BIG Argument list too long
An argument list longer than NCARGS (defined in
<sys/param.h>) bytes is presented to a member of the
exec family.
8 ENOEXEC Exec format error
A request is made to execute a file which, although it
has the appropriate permissions, is not in the proper
format for an executable object program. See a.out(5).
9 EBADF Bad file number
Either a file descriptor refers to no open file, or a
read (respectively write) request is made to a file
which is open only for writing (respectively reading).
10 ECHILD No children from process
Wait and the process has no living or unwaited-for
children.
11 EAGAIN No more processes
A fork failed because the system's process table is
full or the user is not allowed to create any more
processes. This may be a temporary condition and
subsequent calls to the same routine may complete
normally.
12 ENOMEM Not enough core or swap space
During an execve or brk or sbrk, a program asks for
more core or swap space than the system is able to
supply. A lack of swap space is normally a temporary
condition. However, a lack of core is not a temporary
condition; the maximum core size is a system parameter.
13 EACCES Permission denied
An attempt was made to access a file in a way forbidden
by the protection system.
14 EFAULT Bad address
The system encountered a hardware fault in attempting
to access an argument of a system call.
Printed 4/6/89 2
INTRO(2) COMMAND REFERENCE INTRO(2)
15 ENOTBLK Block device required
A non-block file was mentioned where a block device was
required, e.g. in mount.
16 EBUSY Mount device busy
An attempt was made to access a device that was already
in use, such as mounting a device that is already
mounted. This error is also returned if an attempt is
made to dismount a device on which there is an active
file directory (open file, current directory, mounted-
on file, active text segment).
17 EEXIST File exists
An existing file was mentioned in an inappropriate
context, e.g. link.
18 EXDEV Cross-device link
A hard link to a file on another device was attempted.
19 ENODEV No such device driver or operation
An attempt was made to apply an inappropriate system
call to a device; e.g. read a write-only device.
20 ENOTDIR Not a directory
A non-directory was specified where a directory is
required, for example in a path name or as an argument
to chdir(2).
21 EISDIR Is a directory
An attempt was made to write on a directory.
22 EINVAL Invalid argument
Some invalid argument (e.g., mentioning an unknown
signal in kill, reading or writing a file for which
lseek has generated a negative pointer) has been used.
Also set by math functions; see intro(3m).
23 ENFILE File table overflow
The system's table of open files is full, and
temporarily no more opens can be accepted.
24 EMFILE Too many open files
No process may have more than NOFILE (defined in
<sys/max.h>) file descriptors open at a time.
25 ENOTTY Request does not apply
A given request is not recognized by or does not apply
to a specified file or device.
26 ETXTBSY Text file busy
An attempt was made to open(2) for writing a shared-
text file that is being executed.
Printed 4/6/89 3
INTRO(2) COMMAND REFERENCE INTRO(2)
27 EFBIG File too large
The size of a file exceeded the maximum file size.
28 ENOSPC No space left on device
During a write 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 are
available on the file system, or the allocation of an
inode for a newly-created file failed because no inodes
are available on the file system.
29 ESPIPE Illegal seek
An lseek was issued to a pipe; this error may also be
issued for other non-seekable devices.
30 EROFS Read-only file system
An attempt to modify a file or directory was made on a
device mounted read-only.
31 EMLINK Too many links
An attempt was made to make more than the legal limit
of hard links to a file.
32 EPIPE Unconnected pipe
A write on a pipe or socket was attempted, for which
there is no process to read the data. This condition
normally generates a signal; the error is returned if
the signal is ignored.
33 EDOM Math argument out of range
The argument of a function in the math package (see
intro(3m)) is out of the domain of the function.
34 ERANGE Result too large
The value of a function in the math package is not
representable within machine precision.
35 EWOULDBLOCK Operation would block
An operation which would cause a process to block was
attempted on an object while in non-blocking mode (see
ioctl(2)).
36 EINPROGRESS Operation now in progress
An operation which takes a long time to complete (such
as a connect(2)) was attempted on a non-blocking object
(see ioctl(2)).
37 EALREADY Disconnection already in progress
An operation was attempted on a non-blocking object
which already had an operation in progress.
Printed 4/6/89 4
INTRO(2) COMMAND REFERENCE INTRO(2)
38 ENOTSOCK Socket operation on non-socket
Self-explanatory.
39 EDESTADDRREQ Destination address required
A required address was omitted from an operation on a
socket.
40 EMSGSIZE Message too long
A message sent on a socket was larger than the internal
message buffer.
41 EPROTOTYPE Protocol wrong type for socket
A protocol was specified which does not support the
semantics of the socket type requested. For example,
you cannot use the ARPA Internet UDP protocol with type
SOCK_STREAM.
42 ENOPROTOOPT Protocol not available
A bad option was specified in a getsockopt(2) or
setsockopt(2) call.
43 EPROTONOSUPPORT Protocol not supported
The protocol has not been configured into the system or
no implementation for it exists.
44 ESOCKTNOSUPPORT Socket type not supported
The support for the socket type has not been configured
into the system or no implementation for it exists.
45 EOPNOTSUPP Operation not supported on socket
For example, trying to accept a connection on a
datagram socket.
46 EPFNOSUPPORT Protocol family not supported
The protocol family has not been configured into the
system or no implementation for it exists.
47 EAFNOSUPPORT 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 PUP Internet addresses with ARPA
Internet protocols.
48 EADDRINUSE Address already in use
Only one usage of each address is normally permitted.
49 EADDRNOTAVAIL Can't assign requested address
Normally results from an attempt to create a socket
with an address not on this machine.
Printed 4/6/89 5
INTRO(2) COMMAND REFERENCE INTRO(2)
50 ENETDOWN Network is down
A socket operation encountered a dead network.
51 ENETUNREACH Network is unreachable
A socket operation was attempted to an unreachable
network.
52 ENETRESET Network dropped connection on reset
The host you were connected to crashed and rebooted.
53 ECONNABORTED Software caused connection abort
A connection abort was caused internal to your host
machine.
54 ECONNRESET Connection reset by remote host
A connection was forcibly closed by a peer; this
normally results from the peer executing a shutdown(2)
call.
55 ENOBUFS No buffer space available
An operation on a socket or pipe was not performed
because the system lacked sufficient buffer space.
56 EISCONN Socket is already connected
A connect request was made on an already connected
socket; or, a sendto or sendmsg request on a connected
socket specified a destination other than the connected
party.
57 ENOTCONN Socket is not connected
An request to send or receive data was disallowed
because the socket is not connected.
58 ESHUTDOWN Can't send after socket shutdown
A request to send data was disallowed because the
socket had already been shut down with a previous
shutdown(2) call.
59 ETOOMANYREFS Too many references; can't splice
Unused.
60 ETIMEDOUT Connection timed out
A connect request failed because the connected party
did not properly respond after a period of time. (The
timeout period is dependent on the communication
protocol.)
61 ECONNREFUSED Connection refused
No connection could be made because the target machine
actively refused it; this usually results from trying
to connect to a service which is inactive on the
foreign host.
Printed 4/6/89 6
INTRO(2) COMMAND REFERENCE INTRO(2)
62 ELOOP Too many levels of symbolic links
A path name lookup involved more than 8 symbolic links.
63 ENAMETOOLONG File name too long
A component of a path name exceeded MAXNAMLEN
characters, or an entire path name exceeded MAXPATHLEN
characters; these are defined in <sys/max.h>.
64 EHOSTDOWN Host is down
A requested host is not responding.
65 EHOSTUNREACH Host is unreachable
A requested host is not reachable from the current
node.
66 ENOTEMPTY Directory not empty
A directory with entries other than "." and ".." was
supplied to a remove directory or rename call.
67 EPROCLIM Too many processes
Unused.
68 EUSERS Too many users
Unused.
69 EDQUOT Disk quota exceeded
Unused.
70 ENOASCII Name contains byte with high-order bit set
A given path name contains a non-ASCII character, a
byte with the high-order bit set.
71 EMCOLLIDE Map onto something already there
New areas may only be added where there is currently no
memory. If you want to replace an area, unmap it
first.
72 EMRANGE Designated area out of range
Possible problems: any part of the addressed area 1)
crosses the P0:P1 boundary (on a VAX); 2) is in the u
area; 3) is out of the user's address space.
73 EDFS_CD Too many chdir's to remote host(s)
74 EDFSREF Reference is to remote file
75 EDFSBADRESP Response length incorrect
76 EDFSBADCMD Bad command (invalid command; wrong length)
77 EDFSNOSUCHHOST Couldn't find addr of hostname
Printed 4/6/89 7
INTRO(2) COMMAND REFERENCE INTRO(2)
78 EDFSNOBUF Malloc failed on remote system; try smaller
( <8K ) read or write
79 EDFSBADVER Unsupported version
80 EDFSNODAEMON DFS daemon is not running
81 EDFSNOPROC No process slots on remote system
DEFINITIONS
Process ID
Each active process in the system is uniquely identified
by a positive integer called a process ID. The range of
this ID is from 0 to NPROC.
Parent process ID
A new process is created by a currently active process;
see fork(2). The parent process ID of a process is the
process ID of its creator.
Process Group ID
Each active process is a member of a process group that
is identified by a positive integer called the process
group ID; this is the process ID of the group leader.
This grouping permits the signaling of related processes
(see killpg(2)) and the job control mechanisms of
csh(1csh).
Tty Group ID
Each active process can be a member of a terminal group
that is identified by a positive integer called the tty
group ID; this grouping is used to arbitrate between
multiple jobs contending for the same terminal; see
csh(1csh), and tty(4).
Real User ID and Real Group ID
Each user allowed on the system is identified by a
positive integer called a real user ID.
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.
An active process has a real user ID and real group ID
that are set to the real user ID and real group ID,
respectively, of the user responsible for the creation of
the process.
Effective User ID, Effective Group ID, and Access Groups
Access to system resources is governed by three values:
Printed 4/6/89 8
INTRO(2) COMMAND REFERENCE INTRO(2)
the effective user ID, the effective group ID, and the
group access list.
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).
The group access list is an additional set of group ID's
used only in determining resource accessibility. Access
checks are performed as described in the section File
Access Permissions.
Superuser
A process is recognized as a superuser process and is
granted special privileges if its effective user ID is 0.
Special Processes
The processes with a process ID of 0, 1, and 2 are
special. Process 0 is the scheduler. Process 1 is the
initialization process init, and is the ancestor of every
other process in the system; it controls the process
structure. Process 2 is the paging daemon.
Descriptor
An non-negative integer assigned by the system when a
file is referenced by open(2), dup(2), fcntl(2), or
pipe(2), or when a socket is referenced by socket(2) or
socketpair(2). The descriptor uniquely identifies an
access path to that file or socket from a given process
or any of its children.
File Name
Names consisting of up to MAXNAMLEN may be used to name
an ordinary file, special file, or directory.
These characters may be selected from the set of all
ASCII characters excluding 0 (null) and the ASCII code
for / (slash). (The parity bit, bit 8, must be 0.)
Note that it is generally preferable to use only letters,
numbers, underscores, and periods within file names,
since the use of non-printing and other special
characters can be confusing or ambiguous in certain
contexts.
Path Name and Path Prefix
A path name is a null-terminated character string
starting with an optional slash (/), followed by zero or
more directory names separated by slashes, optionally
followed by a file name. The total length of a path name
Printed 4/6/89 9
INTRO(2) COMMAND REFERENCE INTRO(2)
must be less than MAXPATHLEN characters.
A path prefix is a path name without the final file name.
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. A null path name refers
to the current directory.
Directory
A directory is a special type of file which contains
entries which are pointers to data files or other
directories. Directory entries are called links. By
convention, a directory contains at least two links, .
and .., referred to as dot and dot-dot respectively. Dot
refers to the directory itself and dot-dot refers to its
parent directory. In the root directory, .. refers to
the root directory itself.
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' root
directory need not be the root directory of the root file
system.
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 chmod(2) call.
File access is broken down according to whether a file
may be read, written, or executed. Directory files use
the execute permission to indicate whether 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, and 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 class of use of the caller.
Read, write, and execute/search permissions on a file are
granted to a process if
Printed 4/6/89 10
INTRO(2) COMMAND REFERENCE INTRO(2)
- the process's effective user ID is that of the
superuser;
- the process's effective user ID matches the user ID
of the owner of the file and the ``owner'' access
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'' access
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
access permissions for ``other users'' allow access;
- otherwise, permission is denied.
Character and Block Special Files
Character and block special files are used to refer to
physical devices. Certain restrictions may apply to the
use of character and block special files which are
implementation-dependent.
Sockets and Address Families
A socket is an endpoint for communication between
processes. Each socket has queues for sending and
receiving data.
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.
SEE ALSO
intro(3m) and perror(3c).
Printed 4/6/89 11
%%index%%
na:264,106;
sy:370,284;
de:654,2224;3214,2327;5877,2166;8379,2127;10842,2029;13207,2117;15660,1747;17743,2213;20292,2454;23082,2483;25901,2189;
se:28090,143;
%%index%%000000000191