Provided by: manpages-de-dev_0.5-4.1ubuntu1_all bug

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

       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)