INTRO(2)                                                              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 condition is indicated by  an
       otherwise impossible return value.  This is almost always -1; the indi‐
       vidual descriptions specify the details.  Note that a number of  system
       calls  overload the meanings of these error numbers, and that the mean‐
       ings must be interpreted according to the type and circumstances 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 errno, which is not cleared on
       successful calls.  Thus errno should be tested only after an error  has
       occurred.

       The following is a complete list of the errors and their names as given
       in <sys/errno.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  ordinary  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 execu‐
              tion 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.

       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 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 <sys/param.h>) is presented to execve.

       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 num‐
              ber, (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 that is open only for
              writing (resp. reading).

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

       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 memory
              During  an execve or break, 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 sys‐
              tem parameter.  Soft limits may be  increased  to  their  corre‐
              sponding 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.

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

       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  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
              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 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,  men‐
              tioning  an  unknown  signal  in  signal, or some other argument
              inappropriate for the call.  Also set by  math  functions,  (see
              math(3)).

       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
              As released, the limit on the number of open files  per  process
              is 64.  Getdtablesize(2) will obtain the current limit.  Custom‐
              ary configuration limit on most other UNIX  systems  is  20  per
              process.

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

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

       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 write to an ordinary file, the creation of a directory or sym‐
              bolic  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 lseek 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  process  to
              read  the data.  This condition normally generates 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 unrepre‐
              sentable 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 fcntl(2)).

       36  EINPROGRESS  Operation now in progress
              An  operation that takes a long time to complete (such as a con
              nect(2)) was attempted on a non-blocking object (see  fcntl(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 getsockopt(2) or set
              sockopt(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
              NS 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.

       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 peer
              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  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 connect request was made on an already connected socket; or, a
              sendto or sendmsg request on a connected socket specified a des‐
              tination 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 shutdown(2) call.

       59  unused

       60  ETIMEDOUT  Connection timed out
              A connect or send 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 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 write to an ordinary file, the creation of a directory or sym‐
              bolic  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 identified by a pos‐
            itive 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 identi‐
            fied  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(1).

       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(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
            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 effec‐
            tive 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 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  per‐
            formed as described below in ‘‘File Access Permissions’’.

       Super-user
            A  process  is  recognized  as a super-user 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  sys‐
            tem.   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 charac‐
            ter 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  char‐
            acters 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 sepa‐
            rated  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
            root 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 dot and dot-dot respectively.  Dot refers
            to the directory itself and dot-dot refers to  its  parent  direc‐
            tory.

       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
            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 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 commu‐
            nications  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)


4th Berkeley Distribution        May 23, 1986                         INTRO(2)
 
Generated: 2016-12-26
Generated by man2html V0.25
page hit count: 983
Valid CSS Valid XHTML 1.0 Strict