Rechercher une page de manuel
errno
Langue: de
Version: 5. Oktober 2002 (openSuse - 09/10/07)
Section: 3 (Bibliothèques de fonctions)
BEZEICHNUNG
errno - die Nummer des letzten aufgetretenen FehlersÜBERSICHT
#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) zurückgegeben hat. Eine Bibliotheksfunktion darf errno ändern, selbst wenn sie erfolgreich verläuft.Ist -1 auch ein gültiger Rückgabewert, muss errno vor dem Aufruf auf 0 gesetzt werden, um eventuelle Fehler entdecken zu können.
Der ISO-C-Standard definiert errno als veränderbaren lvalue des Typs int, der nicht explizit deklariert sein darf; errno kann ein Makro sein. Jeder Thread erhält eine eigene errno; wird sie in einem Thread gesetzt, wirkt sich das nicht auf ihren Wert in anderen Threads aus.
Alle gültigen Fehlernummern sind ungleich 0; keine Bibliotheksfunktion setzt errno auf 0. Alle von POSIX.1 definierten Fehlerbezeichnungen müssen voneinander verschiedene Werte besitzen.
POSIX.1 enthält (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 zusätzlich die Fehlernummer EILSEQ für Kodierungsfehler bei Multi-Byte- oder Wide-Zeichen.
- E2BIG
- Die Argumentenliste zu lang
- EACCES
- Keine Berechtigung
- EADDRNOTAVAIL
- Adresse nicht verfügbar
- EAFNOSUPPORT
- Adressfamilie nicht unterstützt
- EAGAIN
- Ressource zurzeit nicht verfügbar
- EALREADY
- Verbindung bereits in Bearbeitung
- EBADF
- Ungültiger Dateideskriptor
- EBADMSG
- Ungültige Nachricht
- EBUSY
- Gerät oder Ressource belegt
- ECANCELED
- Operation abgebrochen
- ECHILD
- Keine Kind-Prozesse
- ECONNREFUSED
- Verbindung abgelehnt
- ECONNRESET
- Verbindung zurückgesetzt
- EDEADLK
- Verklemmung beim Zugriff auf eine Ressource vermieden
- EDESTADDRREQ
- Zieladresse erwartet
- EDOM
- Domain-Fehler
- EDQUOT
- reserviert
- EEXIST
- Datei existiert bereits
- EFAULT
- Ungültige Adresse
- EFBIG
- Datei zu groß
- EINPROGRESS
- Operation in Bearbeitung
- EINTR
- Unterbrechung während des Betriebssystemaufrufs
- EINVAL
- Argument ungültig
- 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 großer 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 verfügbar
- ENODATA
- Keine Nachricht verfügbar in der Lese-Warteschlange im STREAM-Kopf
- ENODEV
- Die Operation wird von diesem Gerät nicht unterstützt
- ENOENT
- Datei oder Verzeichnis nicht gefunden
- ENOEXEC
- Fehler im Format der Programmdatei
- ENOLCK
- Keine Sperren verfügbar
- ENOLINK
- reserviert
- ENOMEM
- Nicht genügend Hauptspeicher verfügbar
- ENOMSG
- keine Nachricht des erwarteten Typs
- ENOPROTOOPT
- Protokoll nicht verfügbar
- ENOSPC
- kein Speicherplatz auf dem Gerät verfügbar
- 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 unterstützt
- ENOTTY
- Unpassender IOCTL (I/O-Control) für das Gerät
- ENXIO
- Das Gerät ist nicht konfiguriert
- EOPNOTSUPP
- Operation nicht unterstützt auf diesem Socket
- EOVERFLOW
- Wert zu lang, um im Datentyp gespeichert werden zu können
- EPERM
- Die Operation ist nicht erlaubt
- EPIPE
- Datenübergabe unterbrochen (broken pipe)
- EPROTO
- Protokoll-Fehler
- EPROTONOSUPPORT
- Protokoll nicht unterstützt
- EPROTOTYPE
- falscher Protokolltyp für Socket
- ERANGE
- Das numerische Ergebnis ist außerhalb des gültigen 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 für die Verbindung ist abgelaufen
- ETXTBSY
- Textdatei kann nicht ausgeführt werden, weil sie noch zum Schreiben geöffnet ist.
- EWOULDBLOCK
- Operation würde blockieren (kann der gleiche Wert wie EAGAIN sein)
- EXDEV
- Ungültiger Link über Gerätegrenzen hinweg
ANMERKUNG
Ein beliebter Fehler ist-
if (somecall() == -1) { printf("somecall() failed\n"); if (errno == ...) { ... } }
-
if (somecall() == -1) { int errsv = errno; printf("somecall() failed\n"); if (errsv == ...) { ... } }
SIEHE AUCH
perror(3), strerror(3).Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre