Provided by:
manpages-de-dev_0.10-1_all 
BEZEICHNUNG
errno - die Nummer des letzten aufgetretenen Fehlers
Diese Handbuchseite ist eventuell veraltet. Im Zweifelsfall ziehen Sie
die englischsprachige Handbuchseite zu Rate, indem Sie
man -LC 3 errno
eingeben.
"UBERSICHT
#include <errno.h>
extern int errno;
BESCHREIBUNG
Die Integer-Variable errno wird von Systemaufrufen (und einigen
Bibliotheksfunktionen) gesetzt, um anzuzeigen, was schief gelaufen ist.
Ihr Wert ist nur dann von Bedeutung, wenn der Aufruf einen Fehler
(normalerweise -1) zuruckgegeben hat. Eine Bibliotheksfunktion darf
errno andern, selbst wenn sie erfolgreich verlauft.
Ist -1 auch ein gultiger Ruckgabewert, muss errno vor dem Aufruf auf 0
gesetzt werden, um eventuelle Fehler entdecken zu konnen.
Der ISO-C-Standard definiert errno als veranderbaren lvalue des Typs
int, der nicht explizit deklariert sein darf; errno kann ein Makro
sein. Jeder Thread erhalt eine eigene errno; wird sie in einem Thread
gesetzt, wirkt sich das nicht auf ihren Wert in anderen Threads aus.
Alle gultigen Fehlernummern sind ungleich 0; keine Bibliotheksfunktion
setzt errno auf 0. Alle von POSIX.1 definierten Fehlerbezeichnungen
mussen voneinander verschiedene Werte besitzen.
POSIX.1 enthalt (in der Ausgabe von 2001) die nachfolgende Liste
symbolischer Fehlerbezeichnungen. Im ISO-C-Standard sind davon EDOM
und ERANGE vorgesehen. Der ISO-C Zusatz 1 definiert zusatzlich die
Fehlernummer EILSEQ fur Kodierungsfehler bei Multi-Byte- oder Wide-
Zeichen.
E2BIG Die Argumentenliste zu lang
EACCES Keine Berechtigung
EADDRNOTAVAIL
Adresse nicht verfugbar
EAFNOSUPPORT
Adressfamilie nicht unterstutzt
EAGAIN Ressource zurzeit nicht verfugbar
EALREADY
Verbindung bereits in Bearbeitung
EBADF Ungultiger Dateideskriptor
EBADMSG
Ungultige Nachricht
EBUSY Gerat oder Ressource belegt
ECANCELED
Operation abgebrochen
ECHILD Keine Kind-Prozesse
ECONNREFUSED
Verbindung abgelehnt
ECONNRESET
Verbindung zuruckgesetzt
EDEADLK
Verklemmung beim Zugriff auf eine Ressource vermieden
EDESTADDRREQ
Zieladresse erwartet
EDOM Domain-Fehler
EDQUOT reserviert
EEXIST Datei existiert bereits
EFAULT Ungultige Adresse
EFBIG Datei zu groB
EINPROGRESS
Operation in Bearbeitung
EINTR Unterbrechung wahrend des Betriebssystemaufrufs
EINVAL Argument ungultig
EIO Eingabe-/Ausgabefehler
EISCONN
Socket ist verbunden
EISDIR Ist ein Verzeichnis
ELOOP Zuviele Stufen symbolischer Links
EMFILE Zu viele offene Dateien
EMLINK Zu viele Links
EMSGSIZE
nicht ausreichend groBer Puffer
EMULTIHOP
reserviert
ENAMETOOLONG
Dateiname zu lang
ENETDOWN
Netzwerk ist unten
ENETRESET
Verbindung durch Netzwerk abgebrochen
ENETUNREACH
Netzwerk unerreichbar
ENFILE Zu viele offene Dateien im System
ENOBUFS
Kein Pufferspeicher verfugbar
ENODATA
Keine Nachricht verfugbar in der Lese-Warteschlange im STREAM-
Kopf
ENODEV Die Operation wird von diesem Gerat nicht unterstutzt
ENOENT Datei oder Verzeichnis nicht gefunden
ENOEXEC
Fehler im Format der Programmdatei
ENOLCK Keine Sperren verfugbar
ENOLINK
reserviert
ENOMEM Nicht genugend Hauptspeicher verfugbar
ENOMSG keine Nachricht des erwarteten Typs
ENOPROTOOPT
Protokoll nicht verfugbar
ENOSPC kein Speicherplatz auf dem Gerat verfugbar
ENOSR keine STREAM-Ressourcen
ENOSTR kein STREAM
ENOSYS Die angeforderte Funktion ist nicht implementiert
ENOTCONN
Socket nicht verbunden
ENOTDIR
Ist kein Verzeichnis
ENOTEMPTY
Das Verzeichnis ist nicht leer
ENOTSOCK
kein Socket
ENOTSUP
Die Operation wird nicht unterstutzt
ENOTTY Unpassender IOCTL (I/O-Control) fur das Gerat
ENXIO Das Gerat ist nicht konfiguriert
EOPNOTSUPP
Operation nicht unterstutzt auf diesem Socket
EOVERFLOW
Wert zu lang, um im Datentyp gespeichert werden zu konnen
EPERM Die Operation ist nicht erlaubt
EPIPE Datenubergabe unterbrochen (broken pipe)
EPROTO Protokoll-Fehler
EPROTONOSUPPORT
Protokoll nicht unterstutzt
EPROTOTYPE
falscher Protokolltyp fur Socket
ERANGE Das numerische Ergebnis ist auBerhalb des gultigen Bereiches
EROFS Das Dateisystem ist nur lesbar
ESPIPE Nicht erlaubter Seek
ESRCH Kein passender Prozess gefunden
ESTALE reserviert
ETIME Timeout im STREAM-ioctl()
ETIMEDOUT
Die Wartezeit fur die Verbindung ist abgelaufen
ETXTBSY
Textdatei kann nicht ausgefuhrt werden, weil sie noch zum
Schreiben geoffnet ist.
EWOULDBLOCK
Operation wurde blockieren (kann der gleiche Wert wie EAGAIN
sein)
EXDEV Ungultiger Link uber Gerategrenzen hinweg
ANMERKUNG
Ein beliebter Fehler ist
if (somecall() == -1) {
printf("somecall() failed\n");
if (errno == ...) { ... }
}
zu schreiben, wobei errno nicht mehr den gleichen Wert beinhalten muss,
den es nach Ruckkehr von somecall() gehabt hat. Wenn der Wert von
errno uber einen Bibliotheksaufruf gesichert werden soll, muss er
explizit gespeichert werden:
if (somecall() == -1) {
int errsv = errno;
printf("somecall() failed\n");
if (errsv == ...) { ... }
}
SIEHE AUCH
perror(3), strerror(3).
5. Oktober 2002 ERRNO(3)