home *** CD-ROM | disk | FTP | other *** search
-
- INTRO(2) UNIX Programmer's Manual INTRO(2)
-
- NNAAMMEE
- iinnttrroo - introduction to system calls and error numbers
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssyyss//eerrrrnnoo..hh>>
-
- DDEESSCCRRIIPPTTIIOONN
- This section provides an overview of the system calls, their error re
- turns, and other common definitions and concepts.
-
- DDIIAAGGNNOOSSTTIICCSS
- Nearly all of the system calls provide an error number in the external
- variable _e_r_r_n_o, which is defined as:
-
- extern int errno
-
- When a system call detects an error, it returns an integer value indicat
- ing failure (usually 1) and sets the variable _e_r_r_n_o accordingly. <This
- allows interpretation of the failure on receiving a 1 and to take action
- accordingly.> Successful calls never set _e_r_r_n_o; once set, it remains un
- til another error occurs. It should only be examined after an error.
- Note that a number of system calls overload the meanings of these error
- numbers, and that the meanings must be interpreted according to the type
- and circumstances of the call.
-
- The following is a complete list of the errors and their names as given
- in <_s_y_s_/_e_r_r_n_o_._h>.
-
- 0 _E_r_r_o_r _0. Not used.
-
- 1 EPERM _O_p_e_r_a_t_i_o_n _n_o_t _p_e_r_m_i_t_t_e_d _. An attempt was made to perform an oper
- ation limited to processes with appropriate privileges or to the
- owner of a file or other resources.
-
- 2 ENOENT _N_o _s_u_c_h _f_i_l_e _o_r _d_i_r_e_c_t_o_r_y. A component of a specified pathname
- did not exist, or the pathname was an empty string.
-
- 3 ESRCH _N_o _s_u_c_h _p_r_o_c_e_s_s. No process could be found corresponding to that
- specified by the given process ID.
-
- 4 EINTR _I_n_t_e_r_r_u_p_t_e_d _f_u_n_c_t_i_o_n _c_a_l_l. An asynchronous signal (such as SIGINT
- or SIGQUIT) was caught by the process during the execution of an
- interruptible function. If the signal handler performs a normal
- return, the interupted function call will seem to have returned
- the error condition.
-
- 5 EIO _I_n_p_u_t_/_o_u_t_p_u_t _e_r_r_o_r. Some physical input or output error occurred.
- This error not be reported until a subsequent operation on the
- same file descriptor and may be lost (over written) by any subse
- quent errors.
-
- 6 ENXIO _N_o _s_u_c_h _d_e_v_i_c_e _o_r _a_d_d_r_e_s_s. Input or output on a special file re
- ferred to a device that did not exist, or made a request beyond
- the limits of the device. This error may also occur when, for
- example, a tape drive is not online or no disk pack is is loaded
- on a drive.
-
- 7 E2BIG _A_r_g _l_i_s_t _t_o_o _l_o_n_g. The number of bytes used for the argument and
- environment list of the new process exceeded the current limit of
- 20480 bytes (NCARGS in <_s_y_s_/_p_a_r_a_m_._h>).
-
- 8 ENOEXEC _E_x_e_c _f_o_r_m_a_t _e_r_r_o_r. A request was made to execute a file that,
- although it has the appropriate permissions, was not in the for
- mat required for an executable file.
-
- 9 EBADF _B_a_d _f_i_l_e _d_e_s_c_r_i_p_t_o_r. A file descriptor argument was out of range,
- referred to no open file, or a read (write) request was made to a
- file that was only open for writing (reading).
-
- 10 ECHILD _N_o _c_h_i_l_d _p_r_o_c_e_s_s_e_s. A wait or waitpid function was executed by
- a process that had no existing or unwaitedfor child processes.
-
- 11 EDEADLK _R_e_s_o_u_r_c_e _d_e_a_d_l_o_c_k _a_v_o_i_d_e_d. An attempt was made to lock a sys
- tem resource that would have resulted in a deadlock situation.
-
- 12 ENOMEM _C_a_n_n_n_o_t _a_l_l_o_c_a_t_e _m_e_m_o_r_y. The new process image required more
- memory than was allowed by the hardware or by systemimposed mem
- ory management constraints. A lack of swap space is normally
- temporary; however, a lack of core is not. Soft limits may be
- increased to their corresponding hard limits.
-
- 13 EACCES _P_e_r_m_i_s_s_i_o_n _d_e_n_i_e_d. An attempt was made to access a file in a
- way forbidden by its file access permissions.
-
- 14 EFAULT _B_a_d _a_d_d_r_e_s_s. The system detected an invalid address in attempt
- ing to use an argument of a call.
-
- 15 ENOTBLK _N_o_t _a _b_l_o_c_k _d_e_v_i_c_e. A block device operation was attempted on
- a nonblock device or file.
-
- 16 EBUSY _R_e_s_o_u_r_c_e _b_u_s_y. An attempt to use a system resource which was in
- use at the time in a manner which would have conflicted with the
- request.
-
- 17 EEXIST _F_i_l_e _e_x_i_s_t_s. An existing file was mentioned in an inappropriate
- context, for instance, as the new link name in a link function.
-
- 18 EXDEV _I_m_p_r_o_p_e_r _l_i_n_k. A hard link to a file on another file system was
- attempted.
-
- 19 ENODEV _O_p_e_r_a_t_i_o_n _n_o_t _s_u_p_p_o_r_t_e_d _b_y _d_e_v_i_c_e. An attempt was made to apply
- an inappropriate function to a device, for example, trying to
- read a writeonly device such as a printer.
-
- 20 ENOTDIR _N_o_t _a _d_i_r_e_c_t_o_r_y. A component of the specified pathname exist
- ed, but it was not a directory, when a directory was expected.
-
- 21 EISDIR _I_s _a _d_i_r_e_c_t_o_r_y. An attempt was made to open a directory with
- write mode specified.
-
- 22 EINVAL _I_n_v_a_l_i_d _a_r_g_u_m_e_n_t. Some invalid argument was supplied. (For ex
- ample, specifying an undefined signal to a signal or kill func
- tion).
-
- 23 ENFILE _T_o_o _m_a_n_y _o_p_e_n _f_i_l_e_s _i_n _s_y_s_t_e_m. Maximum number of file descrip
- tors allowable on the system has been reached and a requests for
- an open cannot be satisfied until at least one has been closed.
-
- 24 EMFILE _T_o_o _m_a_n_y _o_p_e_n _f_i_l_e_s. <As released, the limit on the number of
- open files per process is 64.> Getdtablesize(2) will obtain the
- current limit.
-
- 25 ENOTTY _I_n_a_p_p_r_o_p_r_i_a_t_e _i_o_c_t_l _f_o_r _d_e_v_i_c_e. A control function (see
- ioctl(2)) was attempted for a file or special device for which
- the operation was inappropriate.
-
- 26 ETXTBSY _T_e_x_t _f_i_l_e _b_u_s_y. The new process was a pure procedure (shared
- text) file which was open for writing by another process, or the
- pure procedure file was being executed an open call requested
- write access.
-
- 27 EFBIG _F_i_l_e _t_o_o _l_a_r_g_e. The size of a file exceeded the maximum (about
- 2.1E9 bytes).
-
- 28 ENOSPC _D_e_v_i_c_e _o_u_t _o_f _s_p_a_c_e. 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 more inodes are available on the file sys
- tem.
-
- 29 ESPIPE _I_l_l_e_g_a_l _s_e_e_k. An lseek function was issued on a socket, pipe or
- FIFO.
-
- 30 EROFS _R_e_a_d__o_n_l_y _f_i_l_e _s_y_s_t_e_m. An attempt was made to modify a file or
- directory was made on a file system that was readonly at the
- time.
-
- 31 EMLINK _T_o_o _m_a_n_y _l_i_n_k_s. Maximum allowable hard links to a single file
- has been exceeded (limit of 32767 hard links per file).
-
- 32 EPIPE _B_r_o_k_e_n _p_i_p_e. A write on a pipe, socket or FIFO for which there
- is no process to read the data.
-
- 33 EDOM _N_u_m_e_r_i_c_a_l _a_r_g_u_m_e_n_t _o_u_t _o_f _d_o_m_a_i_n. A numerical input argument was
- outside the defined domain of the mathematical function.
-
- 34 ERANGE _N_u_m_e_r_i_c_a_l _r_e_s_u_l_t _o_u_t _o_f _r_a_n_g_e. A numerical result of the func
- tion was to large to fit in the available space (perhaps exceeded
- precision).
-
- 35 EAGAIN _R_e_s_o_u_r_c_e _t_e_m_p_o_r_a_r_i_l_y _u_n_a_v_a_i_l_a_b_l_e. This is a temporary condition
- and later calls to the same routine may complete normally.
-
- 36 EINPROGRESS _O_p_e_r_a_t_i_o_n _n_o_w _i_n _p_r_o_g_r_e_s_s. An operation that takes a long
- time to complete (such as a connect(2)) was attempted on a non
- blocking object (see fcntl(2)).
-
- 37 EALREADY _O_p_e_r_a_t_i_o_n _a_l_r_e_a_d_y _i_n _p_r_o_g_r_e_s_s. An operation was attempted on
- a nonblocking object that already had an operation in progress.
-
- 38 ENOTSOCK _S_o_c_k_e_t _o_p_e_r_a_t_i_o_n _o_n _n_o_n__s_o_c_k_e_t. Selfexplanatory.
-
- 39 EDESTADDRREQ _D_e_s_t_i_n_a_t_i_o_n _a_d_d_r_e_s_s _r_e_q_u_i_r_e_d. A required address was
- omitted from an operation on a socket.
-
- 40 EMSGSIZE _M_e_s_s_a_g_e _t_o_o _l_o_n_g. A message sent on a socket was larger than
- the internal message buffer or some other network limit.
-
- 41 EPROTOTYPE _P_r_o_t_o_c_o_l _w_r_o_n_g _t_y_p_e _f_o_r _s_o_c_k_e_t. A protocol was specified
- that 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 _P_r_o_t_o_c_o_l _n_o_t _a_v_a_i_l_a_b_l_e. A bad option or level was speci
- fied in a getsockopt(2) or setsockopt(2) call.
-
- 43 EPROTONOSUPPORT _P_r_o_t_o_c_o_l _n_o_t _s_u_p_p_o_r_t_e_d. The protocol has not been con
- figured into the system or no implementation for it exists.
-
- 44 ESOCKTNOSUPPORT _S_o_c_k_e_t _t_y_p_e _n_o_t _s_u_p_p_o_r_t_e_d. The support for the socket
- type has not been configured into the system or no implementation
-
-
- for it exists.
-
- 45 EOPNOTSUPP _O_p_e_r_a_t_i_o_n _n_o_t _s_u_p_p_o_r_t_e_d. The attempted operation is not
- supported for the type of object referenced. Usually this occurs
- when a file descriptor refers to a file or socket that cannot
- support this operation, for example, trying to _a_c_c_e_p_t a connec
- tion on a datagram socket.
-
- 46 EPFNOSUPPORT _P_r_o_t_o_c_o_l _f_a_m_i_l_y _n_o_t _s_u_p_p_o_r_t_e_d. The protocol family has
- not been configured into the system or no implementation for it
- exists.
-
- 47 EAFNOSUPPORT _A_d_d_r_e_s_s _f_a_m_i_l_y _n_o_t _s_u_p_p_o_r_t_e_d _b_y _p_r_o_t_o_c_o_l _f_a_m_i_l_y. An ad
- dress incompatible with the requested protocol was used. For ex
- ample, you shouldn't necessarily expect to be able to use NS ad
- dresses with ARPA Internet protocols.
-
- 48 EADDRINUSE _A_d_d_r_e_s_s _a_l_r_e_a_d_y _i_n _u_s_e. Only one usage of each address is
- normally permitted.
-
- 49 EADDRNOTAVAIL _C_a_n_n_o_t _a_s_s_i_g_n _r_e_q_u_e_s_t_e_d _a_d_d_r_e_s_s. Normally results from
- an attempt to create a socket with an address not on this ma
- chine.
-
- 50 ENETDOWN _N_e_t_w_o_r_k _i_s _d_o_w_n. A socket operation encountered a dead net
- work.
-
- 51 ENETUNREACH _N_e_t_w_o_r_k _i_s _u_n_r_e_a_c_h_a_b_l_e. A socket operation was attempted
- to an unreachable network.
-
- 52 ENETRESET _N_e_t_w_o_r_k _d_r_o_p_p_e_d _c_o_n_n_e_c_t_i_o_n _o_n _r_e_s_e_t. The host you were con
- nected to crashed and rebooted.
-
- 53 ECONNABORTED _S_o_f_t_w_a_r_e _c_a_u_s_e_d _c_o_n_n_e_c_t_i_o_n _a_b_o_r_t. A connection abort was
- caused internal to your host machine.
-
- 54 ECONNRESET _C_o_n_n_e_c_t_i_o_n _r_e_s_e_t _b_y _p_e_e_r. A connection was forcibly closed
- by a peer. This normally results from a loss of the connection
- on the remote socket due to a timeout or a reboot.
-
- 55 ENOBUFS _N_o _b_u_f_f_e_r _s_p_a_c_e _a_v_a_i_l_a_b_l_e. An operation on a socket or pipe
- was not performed because the system lacked sufficient buffer
- space or because a queue was full.
-
- 56 EISCONN _S_o_c_k_e_t _i_s _a_l_r_e_a_d_y _c_o_n_n_e_c_t_e_d. A connect request was made on an
- already connected socket; or, a sendto or sendmsg request on a
- connected socket specified a destination when already connected.
-
- 57 ENOTCONN _S_o_c_k_e_t _i_s _n_o_t _c_o_n_n_e_c_t_e_d. An request to send or receive data
- was disallowed because the socket is not connected and (when
- sending on a datagram socket) no address was supplied.
-
- 58 ESHUTDOWN _C_a_n_n_o_t _s_e_n_d _a_f_t_e_r _s_o_c_k_e_t _s_h_u_t_d_o_w_n. A request to send data
- was disallowed because the socket had already been shut down with
- a previous shutdown(2) call.
-
- 60 ETIMEDOUT _C_o_n_n_e_c_t_i_o_n _t_i_m_e_d _o_u_t. A connect or send request failed be
- cause the connected party did not properly respond after a period
- of time. (The timeout period is dependent on the communication
- protocol.)
-
- 61 ECONNREFUSED _C_o_n_n_e_c_t_i_o_n _r_e_f_u_s_e_d. No connection could be made because
- the target machine actively refused it. This usually results
- from trying to connect to a service that is inactive on the for
-
-
- eign host.
-
- 62 ELOOP _T_o_o _m_a_n_y _l_e_v_e_l_s _o_f _s_y_m_b_o_l_i_c _l_i_n_k_s. A path name lookup involved
- more than 8 symbolic links.
-
- 63 ENAMETOOLONG _F_i_l_e _n_a_m_e _t_o_o _l_o_n_g. A component of a path name exceeded
- 255 (MAXNAMELEN) characters, or an entire path name exceeded 1023
- (MAXPATHLEN1) characters.
-
- 64 EHOSTDOWN _H_o_s_t _i_s _d_o_w_n. A socket operation failed because the destina
- tion host was down.
-
- 65 EHOSTUNREACH _N_o _r_o_u_t_e _t_o _h_o_s_t. A socket operation was attempted to an
- unreachable host.
-
- 66 ENOTEMPTY _D_i_r_e_c_t_o_r_y _n_o_t _e_m_p_t_y. A directory with entries other than `.'
- and `..' was supplied to a remove directory or rename call.
-
- 67 EPROCLIM _T_o_o _m_a_n_y _p_r_o_c_e_s_s_e_s.
-
- 68 EUSERS _T_o_o _m_a_n_y _u_s_e_r_s. The quota system ran out of table entries.
-
- 69 EDQUOT _D_i_s_c _q_u_o_t_a _e_x_c_e_e_d_e_d. A write to an ordinary file, the creation
- of a directory or symbolic link, or the creation of a directory
- entry failed because the user's quota of disk blocks was exhaust
- ed, or the allocation of an inode for a newly created file failed
- because the user's quota of inodes was exhausted.
-
- 70 ESTALE _S_t_a_l_e _N_F_S _f_i_l_e _h_a_n_d_l_e. An attempt was made to access an open
- file (on an NFS filesystem) which is now unavailable as refer
- enced by the file descriptor. This may indicate the file was
- deleted on the NFS server or some other catastrophic event oc
- cured.
-
- 72 EBADRPC _R_P_C _s_t_r_u_c_t _i_s _b_a_d. Exchange of RPC information was unsuccess
- ful.
-
- 73 ERPCMISMATCH _R_P_C _v_e_r_s_i_o_n _w_r_o_n_g. The version of RPC on the remote peer
- is not compatible with the local version.
-
- 74 EPROGUNAVAIL _R_P_C _p_r_o_g_. _n_o_t _a_v_a_i_l. The requested program is not regis
- tered on the remote host.
-
- 75 EPROGMISMATCH _P_r_o_g_r_a_m _v_e_r_s_i_o_n _w_r_o_n_g. The requested version of the pro
- gram is not available on the remote host (RPC).
-
- 76 EPROCUNAVAIL _B_a_d _p_r_o_c_e_d_u_r_e _f_o_r _p_r_o_g_r_a_m. An RPC call was attempted for
- a procedure which doesn't exist in the remote program.
-
- 77 ENOLCK _N_o _l_o_c_k_s _a_v_a_i_l_a_b_l_e. A systemimposed limit on the number of si
- multaneous file locks was reached.
-
- 78 ENOSYS _F_u_n_c_t_i_o_n _n_o_t _i_m_p_l_e_m_e_n_t_e_d. Attempted a system call that is not
- available on this system.
-
- DDEEFFIINNIITTIIOONNSS
- Process ID.
- Each active process in the system is uniquely identified by a
- nonnegative integer called a process ID. The range of this ID
- is from 0 to 30000.
-
- 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 iden
- tified by a nonnegative integer called the process group ID.
- This is the process ID of the group leader. This grouping per
- mits the signaling of related processes (see killpg(2)) and the
- job control mechanisms of csh(1).
-
- Tty Group ID
- Each active process can be a member of a terminal group that is
- identified by a nonnegative integer called the tty group ID.
- This grouping is used to arbitrate between multiple jobs contend
- ing for the same terminal; (see csh(1) and tty(4)).
-
- Real User ID and Real Group ID
- Each user on the system is identified by a positive integer
- termed the 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 ac
- counting 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.
-
- Effective User Id, Effective Group Id, and Access Groups
- Access to system resources is governed by three values: the ef
- fective 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 setuserID or setgroup
- ID file (possibly by one its ancestors) (see execve(2)).
-
- The group access list is an additional set of group ID's used on
- ly in determining resource accessibility. Access checks are per
- formed as described below in ``File Access Permissions''.
-
- Superuser
- A process is recognized as a _s_u_p_e_r__u_s_e_r process and is granted
- special privileges if its effective user ID is 0.
-
- Special Processes
- The processes with a process ID's of 0, 1, and 2 are special.
- Process 0 is the scheduler. Process 1 is the initialization pro
- cess init, and is the ancestor of every other process in the
- system. It is used to control the process structure. Process 2
- is the paging daemon.
-
- Descriptor
- An integer assigned by the system when a file is referenced by
- open(2) or dup(2), or when a socket is created by pipe(2),
- socket(2) or socketpair(2), which 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 255 (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 char
- acter 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.
-
- Path Name
- A path name is a NULterminated character string starting with an
- optional slash `/', followed by zero or more directory names sep
- arated by slashes, optionally followed by a file name. The total
- length of a path name must be less than 1024 (MAXPATHLEN) charac
- ters.
-
- If a path name begins with a slash, the path search begins at the
- _r_o_o_t directory. Otherwise, the search begins from the current
- working directory. A slash by itself names the root directory.
- An empty pathname refers to the current directory.
-
- Directory
- A directory is a special type of file that contains entries that
- are references to other files. Directory entries are called
- links. By convention, a directory contains at least two links,
- `.' and `..', referred to as _d_o_t and _d_o_t__d_o_t respectively. Dot
- refers to the directory itself and dotdot refers to its parent
- directory.
-
- Root Directory and Current Working Directory
- Each process has associated with it a concept of a root directory
- and a current working directory for the purpose of resolving path
- name searches. A process's root directory need not be the root
- directory of the root file system.
-
- 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 per
- mission to control if the directory may be searched.
-
- File access permissions are interpreted by the system as they ap
- ply 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 superuser. (Note:
- even the superuser cannot execute a nonexecutable 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 al
- low 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'' al
- low access.
-
- Otherwise, permission is denied.
-
- 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 com
- munications 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.
-
- SSEEEE AALLSSOO
- intro(3), perror(3)
-
- HHIISSTTOORRYY
- An iinnttrroo appeared in Version 6 AT&T UNIX.
-
- 4th Berkeley Distribution July 23, 1991 8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-