Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-4.1.3)
Apropos / Subsearch:
optional field

INTRO(2)                      System Calls Manual                     INTRO(2)

       intro - introduction to system services and error numbers

       #include <&lt;errno.h>&gt;

       This section describes all of the system calls.

       A 2V section number means one or more of the following:

       o  The man page documents System V behavior only.

       o  The  man page documents default SunOS behavior and System V behavior
          as it differs from the default behavior.  These System V differences
          are presented under SYSTEM V section headers.

       o  The  man page documents behavior compliant with IEEE Std 1003.1-1988

       Compile programs for the System V environment using /usr/5bin/cc.  Com-
       pile programs for the default SunOS environment using /usr/bin/cc.  The
       following man pages describe the various environments provided by  Sun:
       lint(1V),   ansic(7V),   bsd(7),   posix(7V),   sunos(7V),  svidii(7V),
       svidiii(7V), xopen(7V).

       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.  An error
       code  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.   Note:  several system calls overload the
       meanings of these error numbers, and the meanings must  be  interpreted
       according  to  the type and circumstances of the call.  See ERROR CODES
       below for a list of system error codes.

       As with normal arguments, all return codes and  values  from  functions
       are of type integer unless otherwise noted.

       The rest of this man page is organized as follows:

       SYSTEM PARAMETERS        System limits, values and options.

       DEFINITIONS              System abstractions and services.

       STREAMS                  Modular  communication between software layers
                                (tty system, networking).

       SYSTEM V IPC             System V shared memory, semaphores,  and  mes-

       ERROR CODES              A  list  of  system  error codes with descrip-

       LIST OF SYSTEM CALLS     A list of all system calls with brief descrip-

       Sections  2  and 3 support a naming convention for those system parame-
       ters that may change from one object to another (for example, path name
       length  may  is  255  on a UFS file system but may be 14 on an NFS file
       system exported by a System V based server).  Typically, the system has
       to  be  queried  (using  pathconf(2V),  fpathconf(), or sysconf(2V)) to
       retrieve the parameter of interest.   The  parameters  have  conceptual
       names such as PATH_MAX.  These names are defined in header files if and
       only if they are invariant across all file systems and releases of  the
       operating  system,  that  is, very rarely.  Because they may be defined
       and/or available from the system calls, there have to be separate names
       for  the  parameters and their values.  The notation {PATH_MAX} denotes
       the value  of  the  parameter  PATH_MAX.   Do  not  confuse  this  with
       _PC_PATH_MAX,  the  name  that is passed to the system call to retrieve
       the value:

              maxpathlen = pathconf(".", _PC_PATH_MAX);

       See pathconf(2V), and sysconf(2V) for further information  about  these

   Controlling Terminal
       A terminal that is associated with a session.  Each session may have at
       most one controlling terminal; a terminal may be the controlling termi-
       nal of at most one session.  The controlling terminal is used to direct
       signals (such as interrupts and job control signals) to the appropriate
       processes by way of the tty's process group.  Controlling terminals are
       assigned when a session leader opens a terminal file that is  not  cur-
       rently a controlling terminal.

       An  integer  assigned  by  the  system  when  a  file  is referenced by
       open(2V), dup(2V), or pipe(2V) or a socket is referenced  by  socket(2)
       or  socketpair(2)  that uniquely identifies an access path to that file
       or socket from a given process or any of its children.

       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 direc-
       tory itself and dot-dot refers to its parent directory.

   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 supplementary group ID.

       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 (pos-
       sibly by one of its ancestors) (see execve(2V)).

       The supplementary group ID are 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.

   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(2V) 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 supplementary group IDs, and the group  per-
              missions allow the access.

              Neither the effective user ID nor effective group ID and supple-
              mentary group IDs 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.

   File Name
       Names consisting of up to {NAME_MAX} 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: it is generally unwise to use *, ?, [, or ] as part of file names
       because of the special meaning attached  to  these  characters  by  the
       shell.   See  sh(1).   Although permitted, it is advisable to avoid the
       use of unprintable characters in file names.

   Parent Process ID
       A new process is created by a currently active process fork (2V).   The
       parent process ID of a process is the process ID of its creator.

   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 must be less than {PATH_MAX} characters.

       More precisely, a path name is a null-terminated character string  con-
       structed as follows:


       where  <&lt;file-name>&gt; is a string of 1 to {NAME_MAX} characters other than
       the ASCII slash and null, and <&lt;dirname>&gt; is a string of 1 to  {NAME_MAX}
       characters  (other  than  the ASCII slash and null) that names a direc-

       If a path name begins with a slash,  the  search  begins  at  the  root
       directory.   Otherwise, the search begins at the current working direc-

       A slash, by itself, names the root directory.  A dot (.) names the cur-
       rent working directory.

       A null path name also refers to the current directory. However, this is
       not true of all UNIX systems.  (On such systems, accidental  use  of  a
       null  path  name  in  routines that do not check for it may corrupt the
       current working directory.)  For portable  code,  specify  the  current
       directory explicitly using `"."', rather than `""'.

   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  ID  is  the
       process ID of the group leader.  This grouping permits the signaling of
       related processes (see the description of killpg() on kill(2V)) and the
       job control mechanisms of csh(1).  Process groups exist from their cre-
       ation until the last member is reaped (that is, a parent issued a  call
       to wait(2V)).

   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  MAXPID
       (see <&lt;sys/param.h>&gt;).

   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 facil-
       ities.  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 ini-
       tialized from the equivalent attributes of the process that created it.

   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.  The root directory is used as the starting point  for  abso-
       lute  path  name  resolution.  The current working directory is used as
       the starting point for relative path name resolution.  A process's root
       directory need not be (but typically is) the root directory of the root
       file system.

       Each process is a member of a session.  A session  is  associated  with
       each  controlling terminal in the system, such as login shells and win-
       dows.  Each process is created in the session of its parent.  A process
       may  alter  its session using setsid(2V) if it is not already a session
       leader.  The system supports  session  IDs.   A  session  leader  is  a
       process  having  process  ID equal to process group ID equal to session
       ID.  Only a session leader may  acquire  a  controlling  terminal.   In
       SunOS  Release  4.1,  processes  are created in sessions by init(8) and
       inetd (8C).  Sessions are also created for processes that  disassociate
       themselves from a controlling terminal using

              ioctl(fd, TIOCNOTTY, 0)


              setpgrp(mypid,  0) For more information about sessions, see set-

       Signals are used for notification of asynchronous events.  Signals  may
       directed  to  processes, process groups, and other combinations of pro-
       cesses.  Signals may be sent by a process or by the  operating  system.
       Some  signals  may be caught.  There is typically a default behavior on
       receipt if they are not caught.  For more  information  about  signals,
       see signal(3V), kill(2V), sigvec(2), termio(4).

   Sockets and Address Families
       A socket is an endpoint for communication between processes, similar to
       the way a telephone is the endpoint of  communication  between  humans.
       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  communica-
       tions  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 fam-
       ily in which the socket was created.

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

       A  process is recognized as a super-user process and is granted special
       privileges if its effective user ID is 0.

   Tty Process Group
       Each active process can be a member of a terminal group that is identi-
       fied by a positive integer called the tty process group ID. This group-
       ing is used to arbitrate between multiple jobs contending for the  same
       terminal  (see  csh(1),  and termio(4)), to direct signals (tty and job
       control) to the appropriate process group, and to terminate a group  of
       related processes upon termination of one of the processes in the group
       (see exit(2V) and sigvec(2)).

       A set of kernel mechanisms that support the development of network ser-
       vices  and  data communication drivers.  It defines interface standards
       for character input/output within the kernel and between the kernel and
       user  level  processes.   The  STREAMS mechanism is composed of utility
       routines, kernel facilities and a set of data structures.

       A stream is a full-duplex data path within the kernel  between  a  user
       process and driver routines.  The primary components are a stream head,
       a driver and zero or more modules between the stream head  and  driver.
       A  stream  is  analogous  to a Shell pipeline except that data flow and
       processing are bidirectional.

   Stream Head
       In a stream, the stream head is the end of the stream that provides the
       interface  between  the stream and a user process.  The principle func-
       tions of the stream head are processing STREAMS-related  system  calls,
       and passing data and information between a user process and the stream.

       In a stream, the driver provides the interface between peripheral hard-
       ware and the stream.  A driver can also be a pseudo-driver, such  as  a
       multiplexor  or  emulator,  and  need not be associated with a hardware

       A module is an entity containing processing routines for input and out-
       put  data.   It  always  exists  in the middle of a stream, between the
       stream's head and a driver.  A module is the STREAMS counterpart to the
       commands  in  a  Shell pipeline except that a module contains a pair of
       functions  which  allow  independent  bidirectional   (downstream   and
       upstream) data flow and processing.

       In a stream, the direction from stream head to driver.

       In a stream, the direction from driver to stream head.

       In a stream, one or more blocks of data or information, with associated
       STREAMS control structures.  Messages can be of several defined  types,
       which  identify  the  message contents.  Messages are the only means of
       transferring data and communicating within a stream.

   Message Queue
       In a stream, a linked list of messages awaiting processing by a  module
       or driver.

   Read Queue
       In  a  stream,  the message queue in a module or driver containing mes-
       sages moving upstream.

   Write Queue
       In a stream, the message queue in a module or  driver  containing  mes-
       sages moving downstream.

       A  multiplexor  is a driver that allows STREAMS associated with several
       user processes to be connected to a single driver, or  several  drivers
       to  be  connected to a single user process.  STREAMS does not provide a
       general multiplexing driver, but does provide the facilities  for  con-
       structing  them,  and  for  connecting  multiplexed  configurations  of

       The SunOS system supports the System V IPC namespace.  For  information
       about  shared memory, semaphores and messages see msgctl(2), msgget(2),
       msgop(2), semctl(2),  semget(2),  semop(2),  shmctl(2),  shmget(2)  and

       Each  system  call description attempts to list all possible error num-
       bers.  The following is a complete list of the error numbers and  their
       names as given in <&lt;errno.h>&gt;.

       E2BIG  7  Arg list too long
              An  argument  list  longer  than 1,048,576 bytes is presented to
              execve(2V) or a routine that called execve().

       EACCES  13  Permission denied
              An attempt was made to access a file in a way forbidden  by  the
              protection system.

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

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

       EADV  83  Advertise error
              An attempt was made to  advertise  a  resource  which  has  been
              advertised already, or to stop the RFS while there are resources
              still advertised, or to force unmount  a  resource  when  it  is
              still advertised.  This error is RFS specific.

       EAFNOSUPPORT  47  Address family not supported by protocol family
              An  address  incompatible  with the requested protocol was used.
              For example, you should not necessarily expect to be able to use
              PUP Internet addresses with ARPA Internet protocols.

       EAGAIN  11  No more processes
              A  fork(2V) failed because the system's process table is full or
              the user is not allowed to create any more processes, or a  sys-
              tem call failed because of insufficient resources.

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

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

       EBADMSG  76  Not a data message
              During a read(2V), getmsg(2), or ioctl(2) I_RECVFD  system  call
              to a STREAMS device, something has come to the head of the queue
              that cannot be processed.  That something depends on the  system
                     read(2V)  control  information  or a passed file descrip-
                     getmsg(2) passed file descriptor.
                     ioctl(2)  control or data information.

       EBUSY  16  Device busy
              An attempt was made to mount a  file  system  that  was  already
              mounted  or  an  attempt  was  made to dismount a file system on
              which there is an active file (open file, mapped  file,  current
              directory, or mounted-on directory).

       ECHILD  10  No children
              A  wait(2V)  was  executed  by a process that had no existing or
              unwaited-for child processes.

       ECOMM  85  Communication error on send
              An attempt was made to send messages to a remote machine when no
              virtual circuit could be found.  This error is RFS specific.

       ECONNABORTED  53  Software caused connection abort
              A connection abort was caused internal to your host machine.

       ECONNREFUSED  61  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.

       ECONNRESET  54  Connection reset by peer
              A  connection  was  forcibly  closed  by  a  peer. This normally
              results from the peer executing a shutdown(2) call.

       EDEADLK  78  Deadlock situation detected/avoided
              An attempt was made to lock a system resource  that  would  have
              resulted in a deadlock situation.

       EDESTADDRREQ  39  Destination address required
              A required address was omitted from an operation on a socket.

       EDOM  33  Math argument
              The  argument of a function in the math library (as described in
              section 3M) is out of the domain of the function.

       EDQUOT  69  Disc quota exceeded
              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  exhausted,  or  the
              allocation  of  an inode for a newly created file failed because
              the user's quota of inodes was exhausted.

       EEXIST  17  File exists
              An existing file was mentioned in an inappropriate context,  for
              example, link(2V).

       EFAULT  14  Bad address
              The  system encountered a hardware fault in attempting to access
              the arguments of a system call.

       EFBIG  27  File too large
              The size of a file exceeded the maximum file size (1,082,201,088

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

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

       EIDRM  77  Identifier removed
              This error is returned to processes that resume execution due to
              the removal of an identifier from the

       EINPROGRESS  36  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 ioctl(2)).

       EINTR  4  Interrupted system call
              An  asynchronous  signal  (such  as  interrupt or quit) that the
              process 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 sys-
              tem call returned this error condition.

       EINVAL  22  Invalid argument
              A  system  call  was made with an invalid argument; for example,
              dismounting a non-mounted file  system,  mentioning  an  unknown
              signal  in  sigvec()  or  kill(),  reading or writing a file for
              which lseek() has generated a negative pointer,  or  some  other
              argument  inappropriate  for  the  call.  Also set by math func-
              tions, see intro(3).

       EIO  5  I/O error
              Some physical I/O error occurred.  This error may in some  cases
              occur on a call following the one to which it actually applies.

       EISCONN  56  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.

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

       ELOOP  62  Too many levels of symbolic links
              A path name lookup involved more than 20 symbolic links.

       EMFILE  24  Too many open files
              A process tried to have more open files than the system allows a
              process to have.  The customary configuration limit  is  64  per

       EMLINK  31  Too many links
              An  attempt  was  made  to  make more than 32767 hard links to a

       EMSGSIZE  40  Message too long
              A message sent on a socket was larger than the internal  message

       EMULTIHOP  87  Multihop attempted
              An  attempt  was  made  to access remote resources which are not
              directly accessible.  This error is RFS specific.

       ENAMETOOLONG  63  File name too long
              A component of a path name exceeded 255 characters, or an entire
              path name exceeded 1024 characters.

       ENETDOWN  50  Network is down
              A socket operation encountered a dead network.

       ENETRESET  52  Network dropped connection on reset
              The host you were connected to crashed and rebooted.

       ENETUNREACH  51  Network is unreachable
              A socket operation was attempted to an unreachable network.

       ENFILE  23  File table overflow
              The  system's  table  of  open files is full, and temporarily no
              more open() calls can be accepted.

       ENOBUFS  55  No buffer space available
              An operation on a socket or pipe was not performed  because  the
              system lacked sufficient buffer space.

       ENODEV  19  No such device
              An  attempt  was made to apply an inappropriate system call to a
              device (for example, an attempt to read a write-only device)  or
              an  attempt  was made to use a device not configured by the sys-

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

       ENOEXEC  8  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 num-
              ber (see a.out(5)).

       ENOLCK  79  No locks available
              A system-imposed limit on the number of  simultaneous  file  and
              record  locks  was  reached  and  no more were available at that

       ENOLINK  82  Link has be severed
              The link (virtual circuit) connecting to  a  remote  machine  is
              gone.  This error is RFS specific.

       ENOMEM  12  Not enough memory
              During an execve(2V), sbrk(), or brk(2), a program asks for more
              address space 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  address
              space  is  not  a  temporary condition.  The maximum size of the
              text, data, and stack segments is a system parameter.  Soft lim-
              its may be increased to their corresponding hard limits.

       ENOMSG  75  No message of desired type
              An attempt was made to receive a message of a type that does not
              exist on the specified message queue; see msgop(2).

       ENONET  80  Machine is not on the network
              A attempt was made to advertise, unadvertise, mount, or  unmount
              remote  resources  while  the  machine  has  not done the proper
              startup to connect to the network.  This error  is  Remote  File
              Sharing (RFS) specific.

       ENOPROTOOPT  42  Option not supported by protocol
              A  bad  option  was specified in a setsockopt() or getsockopt(2)

       ENOSPC  28  No space left on device
              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 system.

       ENOSR  74  Out of stream resources
              During a STREAMS  open(2V),  either  no  STREAMS  queues  or  no
              STREAMS head data structures were available.

       ENOSTR  72  Not a stream device
              A  putmsg(2)  or  getmsg(2)  system call was attempted on a file
              descriptor that is not a STREAMS device.

       ENOSYS  90  Function not implemented
              An attempt was made to use a function that is not  available  in
              this implementation.

       ENOTBLK  15  Block device required
              A  file  that  is not a block device was mentioned where a block
              device was required, for example, in mount(2V).

       ENOTCONN  57  Socket is not connected
              An request to send or receive data was  disallowed  because  the
              socket is not connected.

       ENOTDIR  20  Not a directory
              A non-directory was specified where a directory is required, for
              example, in a path prefix or as an argument to chdir(2V).

       ENOTEMPTY  66  Directory not empty
              An attempt was made to remove a  directory  with  entries  other
              than  `&&amp;.'  and `&&amp;.|.'  by performing a rmdir() system call or a
              rename() system call with that directory specified as the target

       ENOTSOCK  38  Socket operation on non-socket

       ENOTTY  25  Inappropriate ioctl for device
              The  code used in an ioctl() call is not supported by the object
              that the file descriptor in the call refers to.

       ENXIO  6  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, a tape drive is not on-line or no disk pack  is  loaded
              on a drive.

       EOPNOTSUPP  45  Operation not supported on socket
              For example, trying to accept a connection on a datagram socket.

       EPERM  1  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.

       EPFNOSUPPORT  46  Protocol family not supported
              The protocol family has not been configured into the  system  or
              no implementation for it exists.

       EPIPE  32  Broken pipe
              An attempt was made to write on a pipe or socket for which there
              is no process to read the data.  This condition normally  gener-
              ates  a signal; the error is returned if the signal is caught or

       EPROTO  86  Protocol error
              Some protocol error occurred.  This error  is  device  specific,
              but is generally not related to a hardware failure.

       EPROTONOSUPPORT  43  Protocol not supported
              The  protocol  has  not  been  configured  into the system or no
              implementation for it exists.

       EPROTOTYPE  41  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.

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

       EREMOTE  71  Too many levels of remote in path
              An  attempt was made to remotely mount a file system into a path
              that already has a remotely mounted component.

       EROFS  30  Read-only file system
              An attempt to modify a file or directory was made on a file sys-
              tem mounted read-only.

       ERREMOTE  81  Object is remote
              An attempte was made to advertise a resource which is not on the
              local machine, or to mount/unmount a device (or  pathname)  that
              is on a remote machine.  This error is RFS specific.

       ESHUTDOWN  58  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.

       ESOCKTNOSUPPORT  44  Socket type not supported
              The support for the socket type has not been configured into the
              system or no implementation for it exists.

       ESPIPE  29  Illegal seek
              An  lseek() was issued to a socket or pipe.  This error may also
              be issued for other non-seekable devices.

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

       ESRMNT  84  Srmount error
              An  attempt was made to stop RFS while there are resources still
              mounted by remote machines.  This error is RFS specific.

       ESTALE  70  Stale NFS file handle
              An NFS client referenced a file that it had opened but that  had
              since been deleted.

       ETIME  73  Timer expired
              The  timer  set  for  a  STREAMS ioctl(2) call has expired.  The
              cause of this error is device specific and could indicate either
              a  hardware or software failure, or perhaps a timeout value that
              is too short for the specific  operation.   The  status  of  the
              ioctl(2) operation is indeterminate.

       ETIMEDOUT  60  Connection timed out
              A  connect request or an NFS request failed because the party to
              which the request was made did  not  properly  respond  after  a
              period  of time.  (The timeout period is dependent on the commu-
              nication protocol.)

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

       EUSERS  68  Too many users
              An operation to read disk quota information for the user  failed
              because the system quota table was full.

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

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

       unused  0

       brk(2),  chdir(2V),   chmod(2V),   connect(2),   dup(2V),   execve(2V),
       exit(2V),  fork(2V),  getmsg(2),  getsockopt(2),  ioctl(2),  killpg(2),
       link(2V),  mount(2V),   msgctl(2),   msgget(2),   msgop(2),   open(2V),
       pipe(2V), putmsg(2), read(2V), semctl(2), semget(2), semop(2), getsock-
       opt(2),  shmctl(2),  shmget(2),   shmop(2),   shutdown(2),   sigvec(2),
       socket(2),  socketpair(2), wait(2V), csh(1), sh(1), intro(3), perror(3)
       termio(4), a.out(5)

       Name Appears on Page Description

                                21 January 1990                       INTRO(2)