[LINUX] Find the definition of the value of errno

The value of ʻerrno` that tells you the cause of the error in system calls and the standard library.

When I forget it, I want to see the definition of the value, and I feel like I'm checking it every time, so I'll write it down in Qiita this time.

Hand-held include files

On CentOS7, if you try something like "fgrep errno.h / usr / include -r" ...

/usr/include/errno.h
--> /usr/include/bits/errno.h [ENOTSUP=EOPNOTSUPP]
  --> /usr/include/linux/errno.h
    --> /usr/include/asm/errno.h
      --> /usr/include/asm-generic/errno.h [EDEADLK:35 - EHWPOISON:133]
        --> /usr/include/asm-generic/errno-base.h [EPERM:1 - ERANGE:34]

The range of errno definition values is in "[]".

It is defined quite deeply.

Definition list

/usr/include/asm-generic/errno-base.h

#define EPERM            1      /* Operation not permitted */
#define ENOENT           2      /* No such file or directory */
#define ESRCH            3      /* No such process */
#define EINTR            4      /* Interrupted system call */
#define EIO              5      /* I/O error */
#define ENXIO            6      /* No such device or address */
#define E2BIG            7      /* Argument list too long */
#define ENOEXEC          8      /* Exec format error */
#define EBADF            9      /* Bad file number */
#define ECHILD          10      /* No child processes */
#define EAGAIN          11      /* Try again */
#define ENOMEM          12      /* Out of memory */
#define EACCES          13      /* Permission denied */
#define EFAULT          14      /* Bad address */
#define ENOTBLK         15      /* Block device required */
#define EBUSY           16      /* Device or resource busy */
#define EEXIST          17      /* File exists */
#define EXDEV           18      /* Cross-device link */
#define ENODEV          19      /* No such device */
#define ENOTDIR         20      /* Not a directory */
#define EISDIR          21      /* Is a directory */
#define EINVAL          22      /* Invalid argument */
#define ENFILE          23      /* File table overflow */
#define EMFILE          24      /* Too many open files */
#define ENOTTY          25      /* Not a typewriter */
#define ETXTBSY         26      /* Text file busy */
#define EFBIG           27      /* File too large */
#define ENOSPC          28      /* No space left on device */
#define ESPIPE          29      /* Illegal seek */
#define EROFS           30      /* Read-only file system */
#define EMLINK          31      /* Too many links */
#define EPIPE           32      /* Broken pipe */
#define EDOM            33      /* Math argument out of domain of func */
#define ERANGE          34      /* Math result not representable */

/usr/include/asm-generic/errno.h

#define EDEADLK         35      /* Resource deadlock would occur */
#define ENAMETOOLONG    36      /* File name too long */
#define ENOLCK          37      /* No record locks available */
#define ENOSYS          38      /* Function not implemented */
#define ENOTEMPTY       39      /* Directory not empty */
#define ELOOP           40      /* Too many symbolic links encountered */
#define EWOULDBLOCK     EAGAIN  /* Operation would block */
#define ENOMSG          42      /* No message of desired type */
#define EIDRM           43      /* Identifier removed */
#define ECHRNG          44      /* Channel number out of range */
#define EL2NSYNC        45      /* Level 2 not synchronized */
#define EL3HLT          46      /* Level 3 halted */
#define EL3RST          47      /* Level 3 reset */
#define ELNRNG          48      /* Link number out of range */
#define EUNATCH         49      /* Protocol driver not attached */
#define ENOCSI          50      /* No CSI structure available */
#define EL2HLT          51      /* Level 2 halted */
#define EBADE           52      /* Invalid exchange */
#define EBADR           53      /* Invalid request descriptor */
#define EXFULL          54      /* Exchange full */
#define ENOANO          55      /* No anode */
#define EBADRQC         56      /* Invalid request code */
#define EBADSLT         57      /* Invalid slot */

#define EDEADLOCK       EDEADLK

#define EBFONT          59      /* Bad font file format */
#define ENOSTR          60      /* Device not a stream */
#define ENODATA         61      /* No data available */
#define ETIME           62      /* Timer expired */
#define ENOSR           63      /* Out of streams resources */
#define ENONET          64      /* Machine is not on the network */
#define ENOPKG          65      /* Package not installed */
#define EREMOTE         66      /* Object is remote */
#define ENOLINK         67      /* Link has been severed */
#define EADV            68      /* Advertise error */
#define ESRMNT          69      /* Srmount error */
#define ECOMM           70      /* Communication error on send */
#define EPROTO          71      /* Protocol error */
#define EMULTIHOP       72      /* Multihop attempted */
#define EDOTDOT         73      /* RFS specific error */
#define EBADMSG         74      /* Not a data message */
#define EOVERFLOW       75      /* Value too large for defined data type */
#define ENOTUNIQ        76      /* Name not unique on network */
#define EBADFD          77      /* File descriptor in bad state */
#define EREMCHG         78      /* Remote address changed */
#define ELIBACC         79      /* Can not access a needed shared library */
#define ELIBBAD         80      /* Accessing a corrupted shared library */
#define ELIBSCN         81      /* .lib section in a.out corrupted */
#define ELIBMAX         82      /* Attempting to link in too many shared libraries */
#define ELIBEXEC        83      /* Cannot exec a shared library directly */
#define EILSEQ          84      /* Illegal byte sequence */
#define ERESTART        85      /* Interrupted system call should be restarted */
#define ESTRPIPE        86      /* Streams pipe error */
#define EUSERS          87      /* Too many users */
#define ENOTSOCK        88      /* Socket operation on non-socket */
#define EDESTADDRREQ    89      /* Destination address required */
#define EMSGSIZE        90      /* Message too long */
#define EPROTOTYPE      91      /* Protocol wrong type for socket */
#define ENOPROTOOPT     92      /* Protocol not available */
#define EPROTONOSUPPORT 93      /* Protocol not supported */
#define ESOCKTNOSUPPORT 94      /* Socket type not supported */
#define EOPNOTSUPP      95      /* Operation not supported on transport endpoint */
#define EPFNOSUPPORT    96      /* Protocol family not supported */
#define EAFNOSUPPORT    97      /* Address family not supported by protocol */
#define EADDRINUSE      98      /* Address already in use */
#define EADDRNOTAVAIL   99      /* Cannot assign requested address */
#define ENETDOWN        100     /* Network is down */
#define ENETUNREACH     101     /* Network is unreachable */
#define ENETRESET       102     /* Network dropped connection because of reset */
#define ECONNABORTED    103     /* Software caused connection abort */
#define ECONNRESET      104     /* Connection reset by peer */
#define ENOBUFS         105     /* No buffer space available */
#define EISCONN         106     /* Transport endpoint is already connected */
#define ENOTCONN        107     /* Transport endpoint is not connected */
#define ESHUTDOWN       108     /* Cannot send after transport endpoint shutdown */
#define ETOOMANYREFS    109     /* Too many references: cannot splice */
#define ETIMEDOUT       110     /* Connection timed out */
#define ECONNREFUSED    111     /* Connection refused */
#define EHOSTDOWN       112     /* Host is down */
#define EHOSTUNREACH    113     /* No route to host */
#define EALREADY        114     /* Operation already in progress */
#define EINPROGRESS     115     /* Operation now in progress */
#define ESTALE          116     /* Stale file handle */
#define EUCLEAN         117     /* Structure needs cleaning */
#define ENOTNAM         118     /* Not a XENIX named type file */
#define ENAVAIL         119     /* No XENIX semaphores available */
#define EISNAM          120     /* Is a named type file */
#define EREMOTEIO       121     /* Remote I/O error */
#define EDQUOT          122     /* Quota exceeded */

#define ENOMEDIUM       123     /* No medium found */
#define EMEDIUMTYPE     124     /* Wrong medium type */
#define ECANCELED       125     /* Operation Canceled */
#define ENOKEY          126     /* Required key not available */
#define EKEYEXPIRED     127     /* Key has expired */
#define EKEYREVOKED     128     /* Key has been revoked */
#define EKEYREJECTED    129     /* Key was rejected by service */

/* for robust mutexes */
#define EOWNERDEAD      130     /* Owner died */
#define ENOTRECOVERABLE 131     /* State not recoverable */

#define ERFKILL         132     /* Operation not possible due to RF-kill */

#define EHWPOISON       133     /* Memory page has hardware error */

/usr/include/bits/errno.h

# define ENOTSUP EOPNOTSUPP

What is errno? (bonus)

For example, if you have this code ...

#include <stdio.h>
#include <string.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include <errno.h>

#include <unistd.h>

int main(void)
{
    int fd = open("/x",O_RDWR|O_CREAT,0777);

    printf("fd = %d, errno=%d: %s\n", fd, errno, strerror(errno));

    if (fd!=-1) close(fd);
    return 0;
}

When you compile and run ...

$ ./a.out
fd = -1, errno=13: Permission denied

This "13" is defined as EACCES from the include file above and means "Permission denied".

Recommended Posts

Find the definition of the value of errno
Find the divisor of the value entered in python
Find out the location of Python class definition files.
[Python] Find the second smallest value.
Inherit the standard library to find the average value of Queue
About the return value of pthread_mutex_init ()
Find the index of the maximum value (minimum value) of a multidimensional array
About the return value of the histogram.
Find the optimal value of a function with a genetic algorithm (Part 2)
How to find the memory address of a Pandas dataframe value
Find the maximum value python (fixed ver)
Find the area of the union of overlapping rectangles
Find the SHA256 value with R (with bonus)
Migemo version of the: find command,: mfind
Get the value of the middle layer of NN
Find the coefficients of the least squares polynomial
Make the default value of the argument immutable
Find the minimum value of a function by particle swarm optimization (PSO)
How to find the area of the Voronoi diagram
Combinatorial optimization to find the hand of "Millijan"
Find the mood value with python (Rike Koi)
Watch out for the return value of __len__
The value of pyTorch torch.var () is not distributed
Find the number of days in a month
Try singular value decomposition of the daimyo matrix
Find the solution of the nth-order equation in python
Find out the day of the week with datetime
Search by the value of the instance in the list
Find the geometric mean of n! Using Python
[Scientific / technical calculation by Python] Numerical calculation to find the value of derivative (differential)
Find the maximum Python
Projecet Euler 12 Find the number of divisors without division.
Find the sum of unique values with pandas crosstab
Around the place where the value of Errbot is stored
The meaning of self
[Python] Calculate the average value of the pixel value RGB of the object
Find out the version of the language you are running
the zen of Python
[C language] [Linux] Get the value of environment variable
Take the value of SwitchBot thermo-hygrometer with Raspberry Pi
Make the default value of the argument immutable (article explanation)
The story of sys.path.append ()
Log the value of SwitchBot thermo-hygrometer with Raspberry Pi
Find out the location of packages installed with pip
[Golang] Specify an array in the value of map
The story that the return value of tape.gradient () was None
[Django 2.2] Sort and get the value of the relation destination
Revenge of the Types: Revenge of types
I tried to find the entropy of the image with python
Switch the setting value of setting.py according to the development environment
How to find the optimal number of clusters in k-means
Maya | Find out the number of polygons in the selected object
Code that sets the default value in case of AttributeError
Find out the apparent width of a string in python
I tried to find the average of the sequence with TensorFlow
Your URL didn't respond with the value of the challenge parameter.
Python --Find out number of groups in the regex expression
How to find the scaling factor of a biorthogonal wavelet
Find the diameter of the graph by breadth-first search (Python memory)
Find the average / standard deviation of the brightness values in the image
Extract the value of dict or list as a string