| INTRO(2) | System Calls Manual | INTRO(2) | 
intro, errno —
#include <errno.h>
When a system call detects an error, it returns an integer value indicating failure (usually -1) and sets the variable errno accordingly. (This allows interpretation of the failure on receiving a -1 and to take action accordingly.) Successful calls never set errno; once set, it remains until another error occurs. It should only be examined after an error has been reported, because otherwise a leftover value from some previous error may be found instead. (Many library functions that are not system calls also set errno on return, in the same fashion. In these cases a nonzero value may be left in errno even upon successful return if some internal action failed.)
The manual page for each system call will list some of the common errno codes that system call can return, but that should not be considered an exhaustive list, i.e. a properly written program should be able to gracefully recover from any error that a system call might return. Documenting all the error codes that a system call can return in a more specification-like manner would take more resources than this project has available.
Note also that a number of system calls overload the meanings of these error numbers, and that in these cases the meanings must be interpreted according to the type and circumstances of the call.
The following is a complete list of the errors and their names as
    given in <errno.h>.
0 Error 0.1 EPERM Operation not
    permitted.2 ENOENT No such file or
    directory.3 ESRCH No such process.4 EINTR Interrupted function
    call.SIGINT or
      SIGQUIT) was caught by the process during the
      execution of an interruptible function. If the signal handler performs a
      normal return, the interrupted function call will seem to have returned
      the error condition.5 EIO Input/output error.6 ENXIO Device not
    configured.7 E2BIG Arg list too long.ARG_MAX in
      <sys/syslimits.h>).8 ENOEXEC Exec format
    error.9 EBADF Bad file
    descriptor.10 ECHILD No child
    processes.11 EDEADLK Resource deadlock
    avoided.12 ENOMEM Cannot allocate
    memory.13 EACCES Permission
    denied.14 EFAULT Bad address.15 ENOTBLK Block device
    required.16 EBUSY Resource busy.17 EEXIST File exists.18 EXDEV Improper link.19 ENODEV Operation not supported by
    device.20 ENOTDIR Not a directory.21 EISDIR Is a directory.22 EINVAL Invalid argument.23 ENFILE Too many open files in
    system.24 EMFILE Too many open
    files.25 ENOTTY Inappropriate ioctl for
    device.26 ETXTBSY Text file busy.27 EFBIG File too large.28 ENOSPC Device out of
    space.29 ESPIPE Illegal seek.30 EROFS Read-only file
    system.31 EMLINK Too many links.32 EPIPE Broken pipe.33 EDOM Numerical argument out of
    domain.34 ERANGE Result too large or too
    small.35 EAGAIN Resource temporarily
    unavailable.EWOULDBLOCK, but EAGAIN is
      the preferred name.36 EINPROGRESS Operation now in
    progress.37 EALREADY Operation already in
    progress.38 ENOTSOCK Socket operation on
    non-socket.39 EDESTADDRREQ Destination address
    required.40 EMSGSIZE Message too
    long.41 EPROTOTYPE Protocol wrong type
    for socket.SOCK_STREAM.42 ENOPROTOOPT Protocol option not
    available.43 EPROTONOSUPPORT Protocol not
    supported.44 ESOCKTNOSUPPORT Socket type not
    supported.45 EOPNOTSUPP Operation not
    supported.46 EPFNOSUPPORT Protocol family not
    supported.47 EAFNOSUPPORT Address family not
    supported by protocol family.48 EADDRINUSE Address already in
    use.49 EADDRNOTAVAIL Cannot assign
    requested address.50 ENETDOWN Network is
    down.51 ENETUNREACH Network is
    unreachable.52 ENETRESET Network dropped
    connection on reset.53 ECONNABORTED Software caused
    connection abort.54 ECONNRESET Connection reset by
    peer.55 ENOBUFS No buffer space
    available.56 EISCONN Socket is already
    connected.57 ENOTCONN Socket is not
    connected.58 ESHUTDOWN Cannot send after
    socket shutdown.59 ETOOMANYREFS Too many references:
    can't splice.60 ETIMEDOUT Operation timed
    out.61 ECONNREFUSED Connection
    refused.62 ELOOP Too many levels of symbolic
    links.MAXSYMLINKS) symbolic links.63 ENAMETOOLONG File name too
    long.MAXNAMELEN) characters, or an entire path name
      exceeded 1023 (MAXPATHLEN-1) characters.64 EHOSTDOWN Host is down.65 EHOSTUNREACH No route to
    host.66 ENOTEMPTY Directory not
    empty..’ and
      ‘..’ was supplied to a remove
      directory or rename call.67 EPROCLIM Too many
    processes.68 EUSERS Too many users.69 EDQUOT Disc quota
    exceeded.70 ESTALE Stale NFS file
    handle.71 EREMOTE Too many levels of remote
    in path.72 EBADRPC RPC struct is
    bad.73 ERPCMISMATCH RPC version
    wrong.74 EPROGUNAVAIL RPC prog. not
    avail.75 EPROGMISMATCH Program version
    wrong.76 EPROCUNAVAIL Bad procedure for
    program.77 ENOLCK No locks
    available.78 ENOSYS Function not
    implemented.79 EFTYPE Inappropriate file type or
    format.80 EAUTH Authentication
    error.81 ENEEDAUTH Need
    authenticator.82 EIDRM Identifier
    removed.83 ENOMSG No message of the desired
    type.84 EOVERFLOW Value too large to be
    stored in data type.85 EILSEQ Illegal byte
    sequence.86 ENOTSUP Not supported.87 ECANCELED Operation
    canceled.88 EBADMSG Bad or corrupt
    message.89 ENODATA No message
    available.90 ENOSR No STREAM
    resources.91 ENOSTR Not a STREAM.92 ETIME STREAM ioctl
    timeout.93 ENOATTR Attribute not
    found.94 EMULTIHOP Multihop
    attempted.95 ENOLINK Link has been
    severed.96 EPROTO Protocol error.97 EOWNERDEAD Previous owner
    died.98 ENOTRECOVERABLE State not
    recoverable.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.
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 of its ancestors) (see execve(2)). By convention, the effective group ID (the first member of the group access list) is duplicated, so that the execution of a set-group-ID program does not result in the loss of the original (real) group ID.
The group access list is a set of group IDs used only in determining resource accessibility. Access checks are performed as described below in “File Access Permissions”.
There are more machine-dependent kernel threads allocated by different drivers. See the specific driver manual pages for more information.
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 (NUL) and the ASCII code for
        ‘/’ (slash). (The parity bit, bit
        7, must be 0).
Note that it is generally unwise to use
        ‘*’,
        ‘?’,
        ‘[’ or
        ‘]’ as part of file names because
        of the special meaning attached to these characters by the shell.
/’, 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 1024
      (MAXPATHLEN) characters.
    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. An empty string is not a valid pathname.
.’ and
      ‘..’, referred to as
      dot and dot-dot respectively. Dot
      refers to the directory itself and dot-dot refers to its parent
    directory.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. (Note: even the super-user cannot execute a non-executable file).
The process's effective user ID matches the user ID of the owner of the file and the owner permissions allow the access.
The process's effective user ID does not match the user ID of the owner of the file, and either the process's effective group ID matches the group ID of the file, or the group ID of the file is in the process's group access list, and the group permissions 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 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 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.
intro manual page appeared in
  Version 6 AT&T UNIX.
| April 21, 2015 | NetBSD 10.0 |