4.3BSD-UWisc/man/cat2/intro.2

Compare this file to the similar file:
Show the results in this format:




INTRO(2)            UNIX Programmer's Manual             INTRO(2)



NAME
     intro - introduction to system calls and error numbers

SYNOPSIS
     #include <sys/errno.h>

DESCRIPTION
     This section describes all of the system calls.  Most of
     these calls have one or more error returns.  An error condi-
     tion is indicated by an otherwise impossible return value.
     This is almost always -1; the individual descriptions
     specify the details.  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 cir-
     cumstances of the call.

     As with normal arguments, all return codes and values from
     functions are of type integer unless otherwise noted.  An
     error number is also made available in the external variable
     _e_r_r_n_o, which is not cleared on successful calls.  Thus _e_r_r_n_o
     should be tested only after an error has occurred.

     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       Error 0
          Unused.

     1  EPERM  Not owner
          Typically this error indicates an attempt to modify a
          file in some way forbidden except to its owner or
          super-user.  It is also returned for attempts by ordi-
          nary users to do things allowed only to the super-user.

     2  ENOENT  No such file or directory
          This error occurs when a file name is specified and the
          file should exist but doesn't, or when one of the
          directories in a path name does not exist.

     3  ESRCH  No such process
          The process or process group whose number was given
          does not exist, or any such process is already dead.

     4  EINTR  Interrupted system call
          An asynchronous signal (such as interrupt or quit) that
          the user has elected to catch occurred during a system
          call.  If execution is resumed after processing the
          signal and the system call is not restarted, it will
          appear as if the interrupted system call returned this
          error condition.





Printed 12/27/86          May 23, 1986                          1






INTRO(2)            UNIX Programmer's Manual             INTRO(2)



     5  EIO  I/O error
          Some physical I/O error occurred during a _r_e_a_d or
          _w_r_i_t_e.  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 that does
          not exist, or beyond the limits of the device.  It may
          also occur when, for example, an illegal tape drive
          unit number is selected or a disk pack is not loaded on
          a drive.

     7  E2BIG  Arg list too long
          An argument list longer than 20480 bytes (or the
          current limit, NCARGS in <_s_y_s/_p_a_r_a_m._h>) is presented to
          _e_x_e_c_v_e.

     8  ENOEXEC  Exec format error
          A request is made to execute a file that, although it
          has the appropriate permissions, does not start with a
          valid magic number, (see _a._o_u_t(5)).

     9  EBADF  Bad file number
          Either a file descriptor refers to no open file, or a
          read (resp. write) request is made to a file that is
          open only for writing (resp. reading).

     10  ECHILD  No children
          _W_a_i_t and the process has no living or unwaited-for
          children.

     11  EAGAIN  No more processes
          In a _f_o_r_k, the system's process table is full or the
          user is not allowed to create any more processes.

     12  ENOMEM  Not enough memory
          During an _e_x_e_c_v_e or _b_r_e_a_k, a program asks for more core
          or swap space than the system is able to supply, or a
          process size limit would be exceeded.  A lack of swap
          space is normally a temporary condition; however, a
          lack of core is not a temporary condition; the maximum
          size of the text, data, and stack segments is a system
          parameter.  Soft limits may be increased to their
          corresponding hard limits.

     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 the arguments of a system call.



Printed 12/27/86          May 23, 1986                          2






INTRO(2)            UNIX Programmer's Manual             INTRO(2)



     15  ENOTBLK  Block device required
          A plain file was mentioned where a block device was
          required, e.g., in _m_o_u_n_t.

     16  EBUSY  Device busy
          An attempt to mount a device that was already mounted
          or an attempt was made to dismount a device on which
          there is an active file (open file, current directory,
          mounted-on file, or active text segment).  A request
          was made to an exclusive access device that was already
          in use.

     17  EEXIST  File exists
          An existing file was mentioned in an inappropriate con-
          text, e.g., _l_i_n_k.

     18  EXDEV  Cross-device link
          A hard link to a file on another device was attempted.

     19  ENODEV  No such device
          An attempt was made to apply an inappropriate system
          call to a device, e.g., to read a write-only device, or
          the device is not configured by the system.

     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 _c_h_d_i_r.

     21  EISDIR  Is a directory
          An attempt to write on a directory.

     22  EINVAL  Invalid argument
          Some invalid argument: dismounting a non-mounted dev-
          ice, mentioning an unknown signal in _s_i_g_n_a_l, or some
          other argument inappropriate for the call.  Also set by
          math functions, (see _m_a_t_h(3)).

     23  ENFILE  File table overflow
          The system's table of open files is full, and tem-
          porarily no more _o_p_e_n_s can be accepted.

     24  EMFILE  Too many open files
          As released, the limit on the number of open files per
          process is 64.  _G_e_t_d_t_a_b_l_e_s_i_z_e(2) will obtain the
          current limit.  Customary configuration limit on most
          other UNIX systems is 20 per process.

     25  ENOTTY  Inappropriate ioctl for device
          The file mentioned in an _i_o_c_t_l is not a terminal or one
          of the devices to which this call applies.




Printed 12/27/86          May 23, 1986                          3






INTRO(2)            UNIX Programmer's Manual             INTRO(2)



     26  ETXTBSY  Text file busy
          An attempt to execute a pure-procedure program that is
          currently open for writing.  Also an attempt to open
          for writing a pure-procedure program that is being exe-
          cuted.

     27  EFBIG  File too large
          The size of a file exceeded the maximum (about 2.1E9
          bytes).

     28  ENOSPC  No space left on device
          A _w_r_i_t_e to an ordinary file, the creation of a direc-
          tory 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 system.

     29  ESPIPE  Illegal seek
          An _l_s_e_e_k was issued to a socket or 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 to make more than 32767 hard links to a
          file.

     32  EPIPE  Broken pipe
          A write on a pipe or socket for which there is no pro-
          cess to read the data.  This condition normally gen-
          erates a signal; the error is returned if the signal is
          caught or ignored.

     33  EDOM  Argument too large
          The argument of a function in the math package (3M) is
          out of the domain of the function.

     34  ERANGE  Result too large
          The value of a function in the math package (3M) is
          unrepresentable within machine precision.

     35  EWOULDBLOCK  Operation would block
          An operation that would cause a process to block was
          attempted on an object in non-blocking mode (see
          _f_c_n_t_l(2)).

     36  EINPROGRESS  Operation now in progress
          An operation that takes a long time to complete (such
          as a _c_o_n_n_e_c_t(2)) was attempted on a non-blocking object



Printed 12/27/86          May 23, 1986                          4






INTRO(2)            UNIX Programmer's Manual             INTRO(2)



          (see _f_c_n_t_l(2)).

     37  EALREADY  Operation already in progress
          An operation was attempted on a non-blocking object
          that already had an operation in progress.

     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 or some other network limit.

     41  EPROTOTYPE  Protocol wrong type for socket
          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  Option not supported by protocol
          A bad option or level was specified in a _g_e_t_s_o_c_k_o_p_t(2)
          or _s_e_t_s_o_c_k_o_p_t(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 _a_c_c_e_p_t 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 NS addresses with ARPA Internet proto-
          cols.

     48  EADDRINUSE  Address already in use
          Only one usage of each address is normally permitted.



Printed 12/27/86          May 23, 1986                          5






INTRO(2)            UNIX Programmer's Manual             INTRO(2)



     49  EADDRNOTAVAIL  Can't assign requested address
          Normally results from an attempt to create a socket
          with an address not on this machine.

     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 net-
          work.

     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 peer
          A connection was forcibly closed by a peer.  This nor-
          mally results from a loss of the connection on the
          remote socket due to a timeout or a reboot.

     55  ENOBUFS  No buffer space available
          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  Socket is already connected
          A _c_o_n_n_e_c_t request was made on an already connected
          socket; or, a _s_e_n_d_t_o or _s_e_n_d_m_s_g request on a connected
          socket specified a destination when already connected.

     57  ENOTCONN  Socket is not connected
          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  Can't send after socket shutdown
          A request to send data was disallowed because the
          socket had already been shut down with a previous _s_h_u_t_-
          _d_o_w_n(2) call.

     59  _u_n_u_s_e_d

     60  ETIMEDOUT  Connection timed out
          A _c_o_n_n_e_c_t or _s_e_n_d request failed because the connected
          party did not properly respond after a period of time.
          (The timeout period is dependent on the communication
          protocol.)





Printed 12/27/86          May 23, 1986                          6






INTRO(2)            UNIX Programmer's Manual             INTRO(2)



     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 that is inactive on the foreign
          host.

     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 255 (MAXNAMELEN)
          characters, or an entire path name exceeded 1023
          (MAXPATHLEN-1) characters.

     64  EHOSTDOWN  Host is down
          A socket operation failed because the destination host
          was down.

     65  EHOSTUNREACH  Host is unreachable
          A socket operation was attempted to an unreachable
          host.

     66  ENOTEMPTY  Directory not empty
          A directory with entries other than "." and ".." was
          supplied to a remove directory or rename call.

     69  EDQUOT  Disc quota exceeded
          A _w_r_i_t_e to an ordinary file, the creation of a direc-
          tory or symbolic link, or the creation of a directory
          entry failed because the user's quota of disk blocks
          was exhausted, or the allocation of an inode for a
          newly created file failed because the user's quota of
          inodes was exhausted.

DEFINITIONS
     Process ID
          Each active process in the system is uniquely identi-
          fied by a positive 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 _f_o_r_k(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 _k_i_l_l_p_g(2)) and the job control mechan-
          isms of _c_s_h(1).



Printed 12/27/86          May 23, 1986                          7






INTRO(2)            UNIX Programmer's Manual             INTRO(2)



     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
          _c_s_h(1) and _t_t_y(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 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.

     Effective User Id, Effective Group Id, and Access Groups
          Access to system resources is governed by three values:
          the effective user ID, the effective group ID, and the
          group access list.

          The effective user ID and effective group ID are ini-
          tially 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
          its ancestors) (see _e_x_e_c_v_e(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 below in
          ``File Access Permissions''.

     Super-user
          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 process _i_n_i_t, and is the ancestor of
          every other process in the system.  It is used to con-
          trol the process structure.  Process 2 is the paging
          daemon.

     Descriptor
          An integer assigned by the system when a file is



Printed 12/27/86          May 23, 1986                          8






INTRO(2)            UNIX Programmer's Manual             INTRO(2)



          referenced by _o_p_e_n(2) or _d_u_p(2), or when a socket is
          created by _p_i_p_e(2), _s_o_c_k_e_t(2) or _s_o_c_k_e_t_p_a_i_r(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 character excluding 0 (null) and the ASCII code
          for / (slash).  (The parity bit, bit 8, 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 null-terminated character string
          starting with an optional slash (/), followed by zero
          or more directory names separated by slashes, option-
          ally 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.  A null 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 direc-
          tory itself and dot-dot 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 pur-
          pose 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 per-
          missions.  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



Printed 12/27/86          May 23, 1986                          9






INTRO(2)            UNIX Programmer's Manual             INTRO(2)



          permissions are established at the time a file is
          created.  They may be changed at some later time
          through the _c_h_m_o_d(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 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.

          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 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



Printed 12/27/86          May 23, 1986                         10






INTRO(2)            UNIX Programmer's Manual             INTRO(2)



          used in naming message recipients, etc.

          Each instance of the system supports some collection of
          socket types; consult _s_o_c_k_e_t(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(3), perror(3)








































Printed 12/27/86          May 23, 1986                         11