[LINUX] Trouvez la définition de la valeur de errno

La valeur de ʻerrno` qui vous indique la cause de l'erreur dans les appels système et les bibliothèques standard.

Quand je l'oublie, je veux voir la définition de la valeur, et j'ai l'impression de la vérifier à chaque fois, alors je vais l'écrire dans Qiita cette fois.

Fichiers d'inclusion portatifs

Sur CentOS7, si vous essayez quelque chose comme "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]

La plage des valeurs de définition d'errno est entre "[]".

Il est défini assez profondément.

Liste de définitions

/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

Qu'est-ce que errno? (prime)

Par exemple, si vous avez ce 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;
}

Lorsque vous compilez et exécutez ...

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

Ce "13" est défini comme EACCES dans le fichier d'inclusion ci-dessus et signifie "Autorisation refusée".

Recommended Posts

Trouvez la définition de la valeur de errno
Découvrez la fraction de la valeur saisie en python
Connaissez l'emplacement du fichier de définition de classe Python.
[Python] Trouvez la deuxième plus petite valeur.
Hériter de la bibliothèque standard pour trouver la valeur moyenne de Queue
À propos de la valeur de retour de pthread_mutex_init ()
Trouver l'index de la valeur maximale (valeur minimale) d'un tableau multidimensionnel
À propos de la valeur de retour de l'histogramme.
Trouvez la valeur optimale de la fonction à l'aide d'un algorithme génétique (partie 2)
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Trouvons la valeur maximale python (correction ver)
Trouvez l'aire de l'ensemble somme des rectangles qui se chevauchent
Trouvez la valeur SHA256 avec R (avec bonus)
Version Migemo de la commande: find ,: mfind
Obtenez la valeur de la couche intermédiaire de NN
Trouvez le coefficient du polypole le moins carré
Rendre la valeur par défaut de l'argument immuable
Trouvez la valeur minimale de la fonction par la méthode d'optimisation du groupe de particules (PSO)
Comment trouver la zone du diagramme de Boronoi
Trouver la main de "Millijan" par l'optimisation des combinaisons
Trouvez la valeur de l'humeur avec python (Rike Koi)
Attention à la valeur de retour de __len__
La valeur de pyTorch torch.var () n'est pas distribuée
Trouvez le nombre de jours dans un mois
Essayez de décomposer la matrice daimyo par valeur singulière
Trouvez la solution de l'équation d'ordre n avec python
Découvrez le jour par date / heure
Rechercher par la valeur de l'instance dans la liste
[Calcul scientifique / technique par Python] Calcul numérique pour trouver la valeur de la dérivée (différentielle)
Trouvez le maximum de Python
Projecet Euler 12 Trouvez le nombre de fractions sans diviser.
Calculer la somme des valeurs uniques par tabulation croisée des pandas
Autour de l'endroit où la valeur d'Errbot est stockée
Le sens de soi
[Python] Calculez la valeur moyenne de la valeur de pixel RVB de l'objet
Découvrez la version de la langue que vous utilisez
le zen de Python
[Langage C] [Linux] Récupère la valeur de la variable d'environnement
Prenez la valeur du thermo-hygromètre SwitchBot avec Raspberry Pi
Rendre la valeur par défaut de l'argument immuable (explication de l'article)
L'histoire de sys.path.append ()
Changer les valeurs du thermo-hygromètre Bot avec Raspberry Pi
Découvrez l'emplacement des packages installés avec pip
[Golang] Spécifiez un tableau pour la valeur de la carte
L'histoire selon laquelle la valeur de retour de tape.gradient () était None
[Django 2.2] Trier et obtenir la valeur de la destination de la relation
La vengeance des types: la vengeance des types
J'ai essayé de trouver l'entropie de l'image avec python
Changer la valeur de paramètre de setting.py en fonction de l'environnement de développement
Comment trouver le nombre optimal de clusters pour les k-moyennes
Maya | Découvrez le nombre de polygones dans l'objet sélectionné
Code qui définit les valeurs par défaut en cas d'AttributeError
Découvrez la largeur apparente d'une chaîne en python
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
Votre URL n'a pas répondu avec la valeur du paramètre de défi.
Python --Trouvez le nombre de groupes dans l'expression regex
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Trouver le diamètre du graphique par recherche de priorité de largeur (mémoire Python)
Trouvez l'écart moyen / standard des valeurs de luminosité dans l'image
Extraire la valeur de dict ou list sous forme de chaîne de caractères