Provided by: manpages-de-dev_4.13-4_all bug

BEZEICHNUNG

       errno - Nummer des letzten aufgetretenen Fehlers

ÜBERSICHT

       #include <errno.h>

BESCHREIBUNG

       Die  Header-Datei  <errno.h>  definiert  die Variable errno mit Typ integer. Sie  wird von Systemaufrufen
       (und einigen Bibliotheksfunktionen) gesetzt, um anzuzeigen, was schief gelaufen ist.

   errno
       Der Wert in errno ist nur dann von Bedeutung, wenn der Rückgabewert  des  Funktionsaufrufs  einen  Fehler
       anzeigt  (d.h.  -1  bei  den meisten Systemaufrufen; -1 oder NULL bei den meisten Bibliotheksfunktionen).
       Eine erfolgreich aufgerufene Funktion darf den Wert von errno ändern. Der Wert von errno wird niemals von
       irgendeinem Systemaufruf oder einer Bibliotheksfunktion auf Null gesetzt.

       Für einige Systemaufrufe  und  Bibliotheksfunktionen  (wie  z.B.  getpriority(2))  ist  -1  ein  gültiger
       Rückgabewert  bei  erfolgreichem  Funktionsaufruf.  In  solchen  Fällen  kann eine erfolgreiche von einer
       fehlgeschlagenen Ausführung der Funktion unterschieden werden,  indem  vor  dem  Aufruf  errno  auf  Null
       gesetzt wird und wenn der Rückgabestatus einen Fehler anzeigt, errno untersucht wird.

       Der  ISO-C-Standard  definiert errno als veränderbaren lvalue des Typs int, der nicht explizit deklariert
       sein muss; errno darf ein Makro sein. Jeder Thread erhält eine eigene, lokale errno; wird  sie  in  einem
       Thread gesetzt, wirkt sich das nicht auf ihren Wert in anderen Threads aus.

   Fehlernummern und -namen
       Gültige  Fehlernummer  sind  alle  positiven  Zahlen.  Die Header-Datei <errno.h> definiert für jeden der
       möglichen Fehlernummern, die in errno auftreten können, symbolische Namen.

       Mit einer Ausnahme müssen alle von POSIX.1 beschriebenen Fehlernamen unterschiedliche Werte haben. EAGAIN
       und EWOULDBLOCK dürfen gleich sein. Unter Linux haben diese beiden Variablen auf allen Architekturen  den
       gleichen Wert.

       Die  Fehlernummern,  die  jedem symbolischen Namen entsprechen, unterscheiden sich zwischen UNIX-Systemen
       und selbst zwischen verschiedenen Architekturen unter  Linux.  Daher  ist  der  numerische  Wert  in  der
       nachfolgenden Liste der Fehlernamen nicht enthalten. Die Funktionen perror(3) und strerror(3) können dazu
       verwandt werden, diese Namen in die entsprechenden textuellen Fehlermeldungen umzuwandeln.

       Auf  einem  konkreten  Linux-System  kann die Liste aller symbolischen Fehlernamen und der entsprechenden
       Fehlernummern mittels des Befehls errno(1) (Teil des Pakets moreutils) erhalten werden:

           $ errno -l
           EPERM 1 Die Operation ist nicht erlaubt
           ENOENT 2 Datei oder Verzeichnis nicht gefunden
           ESRCH 3 Kein passender Prozess gefunden
           EINTR 4 Unterbrechung während des Betriebssystemaufrufs
           EIO 5 Eingabe-/Ausgabefehler
           …

       Der Befehl errno(1) kann auch zum Nachschlagen einzelner Fehlernummern und  -namen  und  der  Suche  nach
       Zeichenketten aus den Fehlerbeschreibungen wie in dem nachfolgenden Beispiel verwandt werden:

           $ errno 2
           ENOENT 2 Datei oder Verzeichnis nicht gefunden
           $ errno ESRCH
           ESRCH 3 Kein passender Prozess gefunden
           $ errno -s Berechtigung
           EACCES 13 Keine Berechtigung

   Liste der Fehlernamen
       In der nachfolgenden Liste der symbolischen Fehlernamen sind verschiedene Namen wie folgt gekennzeichnet:

       *  POSIX.1-2001:  Der  Name  ist  durch  POSIX.1-2001  definiert  und  wird  in neueren POSIX.1-Versionen
          definiert, außer es ist anderweitig angegeben.

       *  POSIX.1-2008: Der Name ist in POSIX.1-2008 definiert, war  aber  nicht  in  älteren  POSIX.1-Standards
          verfügbar.

       *  C99: Der Name ist durch C99 definiert.

       Es folgt eine Liste von symbolischen Fehlernamen, die unter Linux definiert sind:

       E2BIG           Argumentliste zu lang (POSIX.1-2001)

       EACCES          Keine Berechtigung (POSIX.1-2001)

       EADDRINUSE      Adresse schon in Gebrauch (POSIX.1-2001)

       EADDRNOTAVAIL   Adresse nicht verfügbar (POSIX.1-2001)

       EAFNOSUPPORT    Adressfamilie nicht unterstützt (POSIX.1-2001)

       EAGAIN          Ressource  zeitweise  nicht  verfügbar  (darf  der  gleiche  Wert  wie  EWOULDBLOCK sein,
                       POSIX.1-2001)

       EALREADY        Verbindung ist schon aufgebaut (POSIX.1-2001)

       EBADE           Austausch ungültig

       EBADF           Schlechter Dateideskriptor (POSIX.1-2001)

       EBADFD          Dateideskriptor in schlechtem Zustand

       EBADMSG         Ungültige Nachricht (POSIX.1-2001)

       EBADR           Ungültiger Anforderungsdeskriptor

       EBADRQC         Ungültiger Anforderungscode

       EBADSLT         Ungültiger Slot

       EBUSY           Gerät oder Ressource beschäftigt/belegt (POSIX.1-2001)

       ECANCELED       Aktion abgebrochen (POSIX.1-2001)

       ECHILD          Keine Kindprozesse (POSIX.1-2001)

       ECHRNG          Kanalnummer außerhalb des zulässigen Bereichs

       ECOMM           Kommunikationsfehler beim Senden

       ECONNABORTED    Verbindung abgebrochen (POSIX.1-2001)

       ECONNREFUSED    Verbindung abgelehnt (POSIX.1-2001)

       ECONNRESET      Verbindung zurückgesetzt (POSIX.1-2001)

       EDEADLK         Verklemmung beim Zugriff auf eine Resource (deadlock) vermieden (POSIX.1-2001)

       EDEADLOCK       Auf den meisten Architekturen ein Synonym für EDEADLK.  Auf  einigen  Architekturen  (zum
                       Beispiel  Linux MIPS, PowerPC, SPARC) ist es ein separater Fehlercode »Verklemmungsfehler
                       bei Dateisperrung«.

       EDESTADDRREQ    Zieladresse erforderlich (POSIX.1-2001)

       EDOM            Argument einer mathematischen Funktion außerhalb des Definitionsbereichs (POSIX.1, C99)

       EDQUOT          Festplattenkontingent (disk quota) überschritten (POSIX.1-2001)

       EEXIST          Datei schon vorhanden (POSIX.1-2001)

       EFAULT          Ungültige Adresse (POSIX.1-2001)

       EFBIG           Datei zu groß (POSIX.1-2001)

       EHOSTDOWN       Host/Rechner ist nicht in Betrieb

       EHOSTUNREACH    Host/Rechner nicht erreichbar (POSIX.1-2001)

       EHWPOISON       Speicherseite hat einen Hardware-Fehler

       EIDRM           Identifier/Bezeichner/Kennung entfernt (POSIX.1-2001)

       EILSEQ          Ungültiger oder unvollständiger Multibyte oder weites Zeichen (POSIX.1, C99)

                       Der hier gezeigte Text ist eine Glibc-Fehlerbeschreibung: in POSIX.1 wird  dieser  Fehler
                       als »Ungültige Byte-Sequenz« beschrieben.

       EINPROGRESS     Aktion wird gerade ausgeführt (POSIX.1-2001)

       EINTR           Unterbrochener Funktionsaufruf (POSIX.1-2001); siehe signal(7)

       EINVAL          Ungültiges Argument (POSIX.1-2001)

       EIO             Ein-/Ausgabefehler (POSIX.1-2001)

       EISCONN         Socket ist verbunden (POSIX.1-2001)

       EISDIR          Ist ein Verzeichnis (POSIX.1-2001)

       EISNAM          Ist eine Datei benannten Typs

       EKEYEXPIRED     Schlüssel ist abgelaufen

       EKEYREJECTED    Schlüssel wurde vom Dienst zurückgewiesen

       EKEYREVOKED     Schlüssel wurde widerrufen

       EL2HLT          Stufe 2 angehalten

       EL2NSYNC        Stufe 2 nicht synchronisiert

       EL3HLT          Stufe 3 angehalten

       EL3RST          Stufe 3 zurückgesetzt

       ELIBACC         Zugriff auf notwendige dynamische Bibliothek nicht möglich

       ELIBBAD         Zugriff auf eine beschädigte dynamische Bibliothek

       ELIBMAX         Versuch, zu viele dynamische Bibliotheken zu linken

       ELIBSCN         Abschnitt .lib in a.out defekt

       ELIBEXEC        Eine dynamische Bibliothek kann nicht direkt ausgeführt werden

       ELNRANGE        Link-Nummer außerhalb des zulässigen Bereichs

       ELOOP           Zu viele Ebenen von symbolischen Links (POSIX.1-2001)

       EMEDIUMTYPE     Falscher Medientyp

       EMFILE          Zu  viele offene Dateien (POSIX.1-2001). Typischerweise wird dies durch Überschreiten der
                       in getrlimit(2) beschriebenen Ressourcenbegrenzung RLIMIT_NOFILE hervorgerufen.  Es  kann
                       aber  auch  durch  Überschreiten  der  in  /proc/sys/fs/nr_open festgelegten Beschränkung
                       hervorgerufen werden.

       EMLINK          Zu viele Links (POSIX.1-2001)

       EMSGSIZE        Nachricht zu lang (POSIX.1-2001)

       EMULTIHOP       Multihop (mehrere Etappen) versucht (POSIX.1-2001)

       ENAMETOOLONG    Dateiname zu lang (POSIX.1-2001)

       ENETDOWN        Netzwerk außer Betrieb (POSIX.1-2001)

       ENETRESET       Verbindungsabbruch durch das Netzwerk (POSIX.1-2001)

       ENETUNREACH     Netzwerk nicht erreichbar (POSIX.1-2001)

       ENFILE          Zu viele offene Dateien (POSIX.1-2001). Unter Linux ist dies wahrscheinlich ein  Ergebnis
                       der Beschränkung /proc/sys/fs/file-max (siehe proc(5)).

       ENOANO          Keine Anode

       ENOBUFS         Kein Platz für Puffer verfügbar (POSIX.1 (XSI-STREAMS-Option))

       ENODATA         Im STREAM-Head der Lese-Warteschlange ist keine Nachricht verfügbar (POSIX.1-2001)

       ENODEV          Kein solches Gerät vorhanden (POSIX.1-2001)

       ENOENT          Keine solche Datei oder kein solches Verzeichnis vorhanden (POSIX.1-2001)

                       Typischerweise  tritt  dieser  Fehler  auf, wenn der angegebene Pfadname nicht existiert,
                       einer der Komponenten in dem Verzeichnispräfix eines Pfadnamens nicht existiert oder  der
                       angegebene Pfadname ein hängender symbolischer Link ist.

       ENOEXEC         Fehler im Format der Programmdatei (POSIX.1-2001)

       ENOKEY          Erforderlicher Schlüssel nicht verfügbar

       ENOLCK          Keine Sperren verfügbar (POSIX.1-2001)

       ENOLINK         Link wurde abgetrennt (POSIX.1-2001)

       ENOMEDIUM       Kein Medium gefunden

       ENOMEM          Nicht genügend Platz/Nicht genügend Hauptspeicher verfügbar (POSIX.1-2001)

       ENOMSG          Keine Nachricht vom gewünschten Typ (POSIX.1-2001)

       ENONET          Machine ist nicht an das Netzwerk angeschlossen

       ENOPKG          Paket nicht installiert

       ENOPROTOOPT     Protokoll nicht verfügbar (POSIX.1-2001)

       ENOSPC          Auf dem Gerät ist kein Speicherplatz mehr verfügbar (POSIX.1-2001)

       ENOSR           Keine STREAM-Ressourcen (POSIX.1 (Option XSI STREAMS))

       ENOSTR          Ist kein STREAM (POSIX.1 (XSI-STREAMS-Option))

       ENOSYS          Funktion nicht implementiert (POSIX.1-2001)

       ENOTBLK         Blockgerät erforderlich

       ENOTCONN        Der Socket ist nicht verbunden (POSIX.1-2001)

       ENOTDIR         Ist kein Verzeichnis (POSIX.1-2001)

       ENOTEMPTY       Das Verzeichnis ist nicht leer (POSIX.1-2001)

       ENOTRECOVERABLE Zustand nicht wiederherstellbar (POSIX.1-2008)

       ENOTSOCK        Ist kein Socket (POSIX.1-2001)

       ENOTSUP         Aktion wird nicht unterstützt (POSIX.1-2001)

       ENOTTY          Unpassende E/A-Steuerungsaktion (POSIX.1-2001)

       ENOTUNIQ        Name ist im Netzwerk nicht eindeutig

       ENXIO           Kein solches Gerät/Adresse (POSIX.1-2001)

       EOPNOTSUPP      Aktion für Sockets nicht unterstützt (POSIX.1-2001)

                       (ENOTSUP  und  EOPNOTSUPP  haben auf Linux den gleichen Wert, gemäß POSIX.1 sollten diese
                       Fehlerwerte unterschiedlich sein.)

       EOVERFLOW       Wert zu groß für Speicherung im Datentyp (POSIX.1-2001)

       EOWNERDEAD      Eigentümer verstarb (POSIX.1-2008)

       EPERM           Aktion nicht gestattet (POSIX.1-2001)

       EPFNOSUPPORT    Protokollfamilie nicht unterstützt

       EPIPE           Pipe unterbrochen (POSIX.1-2001)

       EPROTO          Protokollfehler (POSIX.1-2001)

       EPROTONOSUPPORT Protokoll nicht unterstützt (POSIX.1-2001)

       EPROTOTYPE      Falscher Protokolltyp für Socket (POSIX.1-2001)

       ERANGE          Ergebnis zu groß (POSIX.1, C99)

       EREMCHG         Adresse in der Ferne geändert

       EREMOTE         Objekt ist in der Ferne/nicht lokal

       EREMOTEIO       E/A-Fehler in der Ferne

       ERESTART        Unterbrochener Systemaufruf sollte erneut gestart werden

       ERFKILL         Aktion aufgrund von RF-Kill nicht möglich

       EROFS           Nur-lesbares Dateisystem (POSIX.1-2001)

       ESHUTDOWN       Senden nach Herunterfahren des Transport-Endpunktes nicht möglich

       ESPIPE          Ungültiger Seek (POSIX.1-2001)

       ESOCKTNOSUPPORT Socket-Typ nicht unterstützt

       ESRCH           Kein solcher Prozess vorhanden (POSIX.1-2001)

       ESTALE          Veraltete Dateizugriffsnummer (file handle) (POSIX.1-2001)

                       Dieser Fehler kann für NFS- und für andere Dateisysteme auftreten.

       ESTRPIPE        Stream-Pipe-Fehler

       ETIME           Timer abgelaufen (POSIX.1 (XSI-STREAMS-Option))

                       (POSIX.1 nennt das »STREAM ioctl(2)-Zeitüberschreitung«)

       ETIMEDOUT       Verbindung ist abgelaufen (POSIX.1-2001)

       ETOOMANYREFS    Zu viele Referenzen: Zusammenfügen nicht möglich

       ETXTBSY         Textdatei belegt (POSIX.1-2001)

       EUCLEAN         Struktur muss aufgeräumt werden

       EUNATCH         Kein zugeordneter Treiber für Protokoll

       EUSERS          Zu viele Benutzer

       EWOULDBLOCK     Aktion würden blockieren (kann der gleiche Wert wie EAGAIN sein) (POSIX.1-2001)

       EXDEV           Ungültiger Link (POSIX.1-2001)

       EXFULL          Austausch/Vermittlungsstelle voll

ANMERKUNGEN

       Ein verbreiteter Programmierfehler ist

           if (somecall() == -1) {
               printf("somecall() fehlgeschlagen\n");
               if (errno == …) { … }
           }

       Hier muss errno nicht mehr den Wert haben, den er bei der Rückkehr aussomecall() hatte. (D.h.,  der  Wert
       konnte  durch  den  Aufruf  von  printf(3)  verändert  werden).  Wenn  der  Wert  von  errno  über  einen
       Bibliotheksaufruf erhalten bleiben soll, muss er gespeichert werden:

           if (somecall() == -1) {
               int errsv = errno;
               printf("somecall() fehlgeschlagen\n");
               if (errsv == ...) { ... }
           }

       Beachten Sie, dass POSIX-Thread-APIs errno  im  Fehlerfall  nicht  setzen.  Stattdessen  liefern  sie  im
       Fehlerfall  eine  Fehlernummer  als  Funktionsergebnis  zurück.  Diese  Fehlernummern  haben die gleichen
       Bedeutungen wie die in errno durch andere APIs zurückgelieferten Fehlernummern.

       Bei einigen Uraltsystemen war <errno.h> nicht vorhanden  oder  deklarierte  errno  nicht,  so  dass  eine
       manuelle Deklaration von errno notwendig war (d.h. extern int errno). Machen Sie das nicht. Das ist schon
       seit  langer  Zeit  nicht  mehr  notwendig  und wird bei modernen Versionen der C-Bibliothek zu Problemen
       führen.

SIEHE AUCH

       errno(1), err(3), error(3), perror(3), strerror(3)

KOLOPHON

       Diese Seite ist Teil der Veröffentlichung  5.10  des  Projekts  Linux-man-pages.  Eine  Beschreibung  des
       Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
       sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die    deutsche    Übersetzung    dieser    Handbuchseite    wurde    von    Martin    Eberhard   Schauer
       <Martin.E.Schauer@gmx.de>,  Mario  Blättermann  <mario.blaettermann@gmail.com>   und   Helge   Kreutzmann
       <debian@helgefjell.de> erstellt.

       Diese  Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
       bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte  eine  E-Mail  an  die
       Mailingliste der Übersetzer.

                                                1. November 2020                                        ERRNO(3)