INTRO(2)                                                 INTRO(2)

          intro, errno - introduction to system calls and error

          #include <errno.h>

          Section 2 of this manual describes all the entries into the
          system kernel.

          Calls that deal with the file system refer to directory
          entries by name.  In order to read or write(2) data on a
          file, the file must be opened (open, pipe, creat(2)); an
          open file is known by a conventional integer value called a
          `file descriptor'.  Certain open files admit control opera-
          tions that alter their behavior; see in particular ioctl,
          stream, and ttyld(4).

          Most system calls have an error return.  An error condition
          is indicated by an otherwise impossible returned value.
          Almost always this is -1; the individual sections specify
          the details.  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

          There is a table of messages associated with each error, and
          a routine for printing the message; see perror(3). The pos-
          sible error numbers are not recited with each writeup in
          section 2, since many errors are possible for most of the
          calls.  Here is a list of the error numbers, their names as
          defined in <errno.h>, and the messages available using

          0       Error 0

          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

     INTRO(2)                                                 INTRO(2)

               The process whose number was given to kill does not
               exist, or is already dead.

          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 will appear as if the interrupted system
               call returned this error condition.

          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 beyond the limits of the device.  It may
               also occur when, for example, a tape drive is not
               dialed in or no disk pack is loaded on a drive.

          7  E2BIG  Arg list too long
               An argument list longer than 10240 bytes is presented
               to exec.

          8  ENOEXEC  Exec format error
               A request is made to execute a file which, although it
               has the appropriate permissions, does not start with a
               valid magic number, see a.out(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 which is
               open only for writing (resp. reading).

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

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

          12  ENOMEM  Not enough core
               During an exec or break, a program asks for more core
               than the system is able to supply.  This is not a tem-
               porary condition; the maximum core size is a system
               parameter.  The error may also occur if the arrangement
               of text, data, and stack segments requires too many
               segmentation registers.

          13  EACCES  Permission denied

     INTRO(2)                                                 INTRO(2)

               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.

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

          16  EBUSY  Mount 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 directory (open file, current
               directory, mounted-on file, active text segment).

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

          18  EXDEV  Cross-device link
               A 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. 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.

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

          22  EINVAL  Invalid argument
               Some invalid argument: dismounting a non-mounted
               device, mentioning an unknown signal in signal, reading
               or writing a file for which seek has generated a nega-
               tive pointer.  Also set by math functions, see

          23  ENFILE  File table overflow
               The system's table of open files is full, and temporar-
               ily no more opens can be accepted.

          24  EMFILE  Too many open files
               The limit is 128 per process.

          25  ENOTTY  Not a typewriter
               The file mentioned in ioctl is not a terminal or one of

     INTRO(2)                                                 INTRO(2)

               the other devices to which these calls apply.

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

          27  EFBIG  File too large
               The size of a file exceeded the maximum (about 1.0E9

          28  ENOSPC  No space left on device
               During a write to an ordinary file, there is no free
               space left on the device.

          29  ESPIPE  Illegal seek
               An lseek was issued to a pipe or other non-seekable

          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 links to a file.

          32  EPIPE  Broken pipe
               A write on a pipe 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
               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  ELOOP  Link loop
               An endless cycle of symbolic links was encountered.


          ETXTBSY should happen only when a text file is open for