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.

"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)