[LINUX] Finden Sie die Definition des Wertes von errno

Der Wert von "errno", der die Fehlerursache in Systemaufrufen und Standardbibliotheken angibt.

Wenn ich es vergesse, möchte ich die Definition des Wertes sehen und ich habe das Gefühl, dass ich ihn jedes Mal überprüfe, also schreibe ich ihn diesmal in Qiita auf.

Handheld-Include-Dateien

Wenn Sie unter CentOS7 etwas wie "fgrep errno.h / usr / include -r" versuchen ...

/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]

Der Bereich der Fehlerdefinitionswerte liegt in "[]".

Es ist ziemlich tief definiert.

Definitionsliste

/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

Was ist errno? (Bonus)

Zum Beispiel, wenn Sie diesen Code haben ...

#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;
}

Wenn Sie kompilieren und ausführen ...

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

Diese "13" ist aus der obigen Include-Datei als EACCES definiert und bedeutet "Berechtigung verweigert".

Recommended Posts

Finden Sie die Definition des Wertes von errno
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Kennen Sie den Speicherort der Python-Klassendefinitionsdatei.
[Python] Finden Sie den zweitkleinsten Wert.
Erben Sie die Standardbibliothek, um den Durchschnittswert der Warteschlange zu ermitteln
Über den Rückgabewert von pthread_mutex_init ()
Suchen Sie den Index des Maximalwerts (Minimalwerts) eines mehrdimensionalen Arrays
Über den Rückgabewert des Histogramms.
Finden Sie den optimalen Wert der Funktion mit einem genetischen Algorithmus (Teil 2)
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
Lassen Sie uns den Maximalwert Python finden (Korrektur ver)
Suchen Sie den Bereich des Summensatzes überlappender Rechtecke
Finden Sie den SHA256-Wert mit R (mit Bonus)
Migemo-Version des Befehls: find,: mfind
Ermitteln Sie den Wert der mittleren Schicht von NN
Finden Sie den Koeffizienten des Polypolys mit dem kleinsten Quadrat
Machen Sie den Standardwert des Arguments unveränderlich
Ermitteln Sie den Mindestwert der Funktion mithilfe der Partikelgruppenoptimierungsmethode (PSO).
So finden Sie den Bereich des Boronoi-Diagramms
Die Hand von "Millijan" durch Kombinationsoptimierung finden
Finden Sie den Stimmungswert mit Python (Rike Koi)
Achten Sie auf den Rückgabewert von __len__
Der Wert von pyTorch torch.var () wird nicht verteilt
Finden Sie die Anzahl der Tage in einem Monat
Versuchen Sie, die Daimyo-Matrix durch einen Singularwert zu zerlegen
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Finden Sie den Tag nach Datum / Uhrzeit heraus
Suchen Sie nach dem Wert der Instanz in der Liste
[Wissenschaftlich-technische Berechnung von Python] Numerische Berechnung zur Ermittlung des Ableitungswerts (Differential)
Finden Sie das maximale Python
Projecet Euler 12 Ermitteln Sie die Anzahl der Brüche ohne Division.
Berechnen Sie die Summe der eindeutigen Werte durch Pandas-Kreuztabellen
Um den Ort, an dem der Wert von Errbot gespeichert ist
Die Bedeutung des Selbst
[Python] Berechnen Sie den Durchschnittswert des Pixelwerts RGB des Objekts
Finden Sie die Version der Sprache heraus, die Sie ausführen
der Zen von Python
[C-Sprache] [Linux] Ruft den Wert der Umgebungsvariablen ab
Nehmen Sie den Wert des SwitchBot-Thermo-Hygrometers mit Raspberry Pi
Machen Sie den Standardwert des Arguments unveränderlich (Artikelerklärung)
Die Geschichte von sys.path.append ()
Umschalten der Bot-Thermo-Hygrometer-Werte mit Raspberry Pi
Finden Sie den Speicherort der mit pip installierten Pakete heraus
[Golang] Geben Sie ein Array für den Wert der Karte an
Die Geschichte, dass der Rückgabewert von tape.gradient () None war
[Django 2.2] Sortieren und erhalten Sie den Wert des Beziehungsziels
Rache der Typen: Rache der Typen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ändern Sie den Einstellungswert von settings.py entsprechend der Entwicklungsumgebung
So finden Sie die optimale Anzahl von Clustern für k-means
Maya | Ermitteln Sie die Anzahl der Polygone im ausgewählten Objekt
Code, der bei AttributeError Standardwerte festlegt
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ihre URL hat nicht mit dem Wert des Challenge-Parameters geantwortet.
Python - Ermitteln Sie die Anzahl der Gruppen im regulären Ausdruck
So ermitteln Sie den Skalierungskoeffizienten eines bipolaren Wavelets
Ermitteln Sie den Durchmesser des Diagramms anhand der Suche nach Breitenpriorität (Python-Speicher).
Finden Sie den Durchschnitt / die Standardabweichung der Helligkeitswerte im Bild
Extrahieren Sie den Wert von dict oder list als Zeichenfolge