Provided by: manpages-de-dev_1.4-1_all 

BEZEICHNUNG
errno - Nummer des letzten aufgetretenen Fehlers
ÜBERSICHT
#include <errno.h>
BESCHREIBUNG
Die Header-Datei <errno.h> definiert die Integer-Variable errno. Sie wird von Systemaufrufen (und
einigen Bibliotheksfunktionen) gesetzt, um anzuzeigen, was schief gelaufen ist. Ihr Wert 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.
Gültige Fehlernummern sind allesamt ungleich 0; kein Systemaufruf und keine Bibliotheksfunktion setzt
errno auf 0.
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.
Mit einer Ausnahme müssen alle von POSIX.1 beschriebenen Fehlernamen unterschiedliche Werte haben. EAGAIN
und EWOULDBLOCK dürfen gleich sein.
Es folgt eine Liste der symbolischen Fehlernamen, die für Linux definiert sind. Einige von ihnen sind mit
POSIX.1 gekennzeichnet, weil der Name von POSIX.1-2001 definiert wird; analog weist C99 auf C99 hin.
E2BIG Argumentliste zu lang (POSIX.1)
EACCES Keine Berechtigung (POSIX.1)
EADDRINUSE Adresse schon in Gebrauch (POSIX.1)
EADDRNOTAVAIL Adresse nicht verfügbar (POSIX.1)
EAFNOSUPPORT Adressfamilie nicht unterstützt (POSIX.1)
EAGAIN Ressource zeitweise nicht verfügbar (darf der gleiche Wert sein wie EWOULDBLOCK, POSIX.1)
EALREADY Verbindung ist schon aufgebaut (POSIX.1)
EBADE Austausch ungültig
EBADF Schlechter Dateideskriptor (POSIX.1)
EBADFD Dateideskriptor in schlechtem Zustand
EBADMSG Ungültige Nachricht (POSIX.1)
EBADR Ungültiger Anforderungsdeskriptor
EBADRQC Ungültiger Anforderungscode
EBADSLT Ungültiger Slot
EBUSY Gerät oder Ressource beschäftigt/belegt
ECANCELED Operation abgebrochen (POSIX.1)
ECHILD Keine Kind-Prozesse (POSIX.1)
ECHRNG Kanalnummer außerhalb des zulässigen Bereichs
ECOMM Kommunikationsfehler beim Senden
ECONNABORTED Verbindung abgebrochen (POSIX.1)
ECONNREFUSED Verbindung abgelehnt (POSIX.1)
ECONNRESET Verbindung zurückgesetzt (POSIX.1)
EDEADLK Verklemmung beim Zugriff auf eine Resource (deadlock) vermieden (POSIX.1)
EDEADLOCK Synonym für EDEADLK
EDESTADDRREQ Zieladresse erforderlich (POSIX.1)
EDOM Argument einer mathematischen Funktion außerhalb des Definitionsbereichs (POSIX.1, C99)
EDQUOT Festplattenkontingent (disk quota) überschritten (POSIX.1)
EEXIST Datei schon vorhanden (POSIX.1)
EFAULT Ungültige Adresse (POSIX.1)
EFBIG Datei zu groß (POSIX.1)
EHOSTDOWN Host/Rechner ist nicht in Betrieb
EHOSTUNREACH Host/Rechner nicht erreichbar (POSIX.1)
EIDRM Identifier/Bezeichner/Kennung entfernt (POSIX.1)
EILSEQ Ungültige Byte-Sequenz (POSIX.1, C99)
EINPROGRESS Operation wird gerade ausgeführt (POSIX.1)
EINTR Aufruf einer unterbrochenen Funktion (POSIX.1); siehe signal(7)
EINVAL Ungültiges Argument (POSIX.1)
EIO E/A-Fehler (POSIX.1)
EISCONN Socket ist verbunden (POSIX.1)
EISDIR Ist ein Verzeichnis (POSIX.1)
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 Ebene 2 angehalten
EL2NSYNC Ebene 2 nicht synchronisiert
EL3HLT Ebene 3 angehalten
EL3RST Ebene 3 angehalten
ELIBACC Zugriff auf notwendige Laufzeitbibliothek nicht möglich
ELIBBAD Zugriff auf eine beschädigte Laufzeitbibliothek
ELIBMAX Versuch, zu viele Laufzeitbibliotheken zu linken
ELIBSCN Bibliotheksabschnitt in a.out defekt
ELIBEXEC Eine Laufzeitbibliothek kann nicht direkt ausgeführt werden
ELOOP Zu viele Ebenen von symbolischen Links (POSIX.1)
EMEDIUMTYPE Falscher Medientyp
EMFILE Zu viele offene Dateien (POSIX.1)
EMLINK Zu viele Links (POSIX.1)
EMSGSIZE Nachricht zu lang (POSIX.1)
EMULTIHOP Multihop (mehrere Etappen) versucht (POSIX.1)
ENAMETOOLONG Dateiname zu lang (POSIX.1)
ENETDOWN Netzwerk außer Betrieb (POSIX.1)
ENETRESET Verbindungsabbruch durch das Netzwerk (POSIX.1)
ENETUNREACH Netzwerk nicht erreichbar (POSIX.1)
ENFILE Zu viele offene Dateien im System (POSIX.1)
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)
ENODEV Kein solches Gerät vorhanden (POSIX.1)
ENOENT Datei oder Verzeichnis nicht vorhanden (POSIX.1)
ENOEXEC Fehler im Format der Programmdatei (POSIX.1)
ENOKEY Erforderlicher Schlüssel nicht verfügbar
ENOLCK Keine Sperren verfügbar (POSIX.1)
ENOLINK Link wurde erschwert (POSIX.1)
ENOMEDIUM Kein Medium gefunden
ENOMEM Nicht genügend Platz (POSIX.1)
ENOMSG Keine Nachricht vom gewünschten Typ (POSIX.1)
ENONET Machine ist nicht an das Netzwerk angeschlossen
ENOPKG Paket nicht installiert
ENOPROTOOPT Protokoll nicht verfügbar (POSIX.1)
ENOSPC Auf dem Gerät ist kein Speicherplatz mehr verfügbar (POSIX.1)
ENOSR Keine STREAM-Ressourcen (POSIX.1 (Option XSI STREAMS))
ENOSTR Ist kein STREAM (POSIX.1 (XSI STREAMS option))
ENOSYS Funktion nicht implementiert (POSIX.1)
ENOTBLK Blockgerät erforderlich
ENOTCONN Der Socket ist nicht verbunden (POSIX.1)
ENOTDIR Ist kein Verzeichnis (POSIX.1)
ENOTEMPTY Das Verzeichnis ist nicht leer (POSIX.1)
ENOTSOCK Ist kein Socket (POSIX.1)
ENOTSUP Operation wird nicht unterstützt (POSIX.1)
ENOTTY Unpassende E/A-Steuerungsoperation (POSIX.1)
ENOTUNIQ Name ist im Netzwerk nicht eindeutig
ENXIO Kein solches Gerät/Adresse (POSIX.1)
EOPNOTSUPP Operation für Sockets nicht unterstützt (POSIX.1)
(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)
EPERM Operation nicht gestattet (POSIX.1)
EPFNOSUPPORT Protokollfamilie nicht unterstützt
EPIPE Pipe unterbrochen (POSIX.1)
EPROTO Protokollfehler (POSIX.1)
EPROTONOSUPPORT Protokoll nicht unterstützt (POSIX.1)
EPROTOTYPE Falscher Protokolltyp für Socket (POSIX.1)
ERANGE Ergebnis zu groß (POSIX.1, C99)
EREMCHG Entfernte Adresse geändert
EREMOTE Objekt ist entfernt/nicht lokal
EREMOTEIO Entfernter E/A-Fehler
ERESTART Unterbrochener Systemaufruf sollte erneut gestart werden
EROFS Read-only filesystem (POSIX.1)
ESHUTDOWN Senden nach Herunterfahren des Transport-Endpunktes nicht möglich
ESPIPE ungültiger Seek (POSIX.1)
ESOCKTNOSUPPORT Socket-Typ nicht unterstützt
ESRCH Kein passender Prozess gefunden (POSIX.1)
ESTALE »Abgestandener« Datei-Handle (POSIX.1)
This error can occur for NFS and for other filesystems
ESTRPIPE Stream-Pipelinefehler
ETIME Zeit abgelaufen (POSIX.1 (XSI STREAMS option))
(POSIX.1 nennt das »STREAM ioctl(2) timeout«)
ETIMEDOUT Die Wartezeit für die Verbindung ist abgelaufen (POSIX.1)
ETXTBSY Textdatei belegt (POSIX.1)
EUCLEAN Struktur muss aufgeräumt werden
EUNATCH Kein zugeordneter Treiber für Protokoll
EUSERS Zu viele Benutzer
EWOULDBLOCK Operation würden blockieren (darf der gleiche Wert sein wie EAGAIN, POSIX.1)
EXDEV Ungültiger Link (POSIX.1)
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 == ...) { ... }
}
Im traditionellen C war es gebräuchlich, errno manuell (mittels extern int errno) zu deklarieren anstatt
<errno.h> einzubinden. Unterlassen Sie das. Das wird mit modernen Versionen der C-Bibliothek nicht
funktionieren. Es kann aber auf (sehr) alten UNIX-Systemen vorkommen, dass <errno.h> fehlt und die
Deklaration erforderlich ist.
SIEHE AUCH
err(3), error(3), perror(3), strerror(3)
KOLOPHON
This page is part of release 3.54 of the Linux man-pages project. A description of the project, and
information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <Martin.E.Schauer@gmx.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
<debian-l10n-german@lists.debian.org>.
9. Juli 2008 ERRNO(3)