Provided by: manpages-de-dev_0.10-1_all bug

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.

Ü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 == ...) { ... }
              }

       zu schreiben, wobei errno nicht mehr den gleichen Wert beinhalten muss,
       den es nach Rückkehr von somecall() gehabt hat. Wenn der Wert von errno
       über  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)