Linux repositories inspector
10. Oktober 2019
15. September 2017

manpages-de-dev

German development manpages

man-pages-de

German Linux man pages

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

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.
All the error names specified by POSIX.1 must have distinct values, with the exception of EAGAIN and EWOULDBLOCK, which may be the same. On Linux, these two have the same value on all architectures.
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 On most architectures, a synonym for EDEADLK. On some architectures (e.g., Linux MIPS, PowerPC, SPARC), it is a separate error code "File locking deadlock error".
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 Laufzeitbibliothek nicht möglich
ELIBBAD Zugriff auf eine beschädigte Laufzeitbibliothek
ELIBMAX Versuch, zu viele Laufzeitbibliotheken zu linken
ELIBSCN Abschnitt .lib in a.out defekt
ELIBEXEC Eine Laufzeitbibliothek 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
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 == ...) { ... } }
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.

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 5.03 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 <>, Mario Blättermann <> und Helge Kreutzmann <> 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 <>.
⇧ Top