strerror

STRERROR(3)                 Linux-Programmierhandbuch                STRERROR(3)



BEZEICHNUNG
       strerror, strerrorname_np, strerrordesc_np, strerror_r, strerror_l - gibt
       eine Zeichenkette zurück, die den Fehlercode beschreibt

ÜBERSICHT
       #include <string.h>

       char *strerror(int errnum);
       const char *strerrorname_np(int errnum);
       const char *strerrordesc_np(int errnum);

       int strerror_r(int errnum, char *buf, size_t buflen);
                   /* XSI-konform */

       char *strerror_r(int errnum, char *buf, size_t buflen);
                   /* GNU-spezifisch */

       char *strerror_l(int errnum, locale_t locale);

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       strerrorname_np(), strerrordesc_np():
           _GNU_SOURCE
       strerror_r():
           Die XSI-konforme Version wird bereitgestellt, falls:
           (_POSIX_C_SOURCE >= 200112L) && !  _GNU_SOURCE
           Anderenfalls wird die GNU-spezifische Version bereitgestellt.

BESCHREIBUNG
       Die Funktion strerror() gibt einen Zeiger auf eine Zeichenkette mit der
       Beschreibung des Fehlercodes für das übergebene Argument errnum zurück.
       Möglicherweise wertet sie dabei den LC_MESSAGES-Teil der aktuellen Locale
       aus, um die passende Sprache zu wählen. (Falls beispielsweise errnum
       EINVAL ist, dann wird die zurückgelieferte Beschreibung »Invalid
       argument« sein.). Diese Zeichenkette darf nicht von der Anwendung
       verändert werden, wohl aber von einem nachfolgenden Aufruf von strerror()
       oder strerror_l(). Diese Zeichenkette wird von keiner anderen
       Bibliotheksfunktion, inklusive perror(3), verändert.

       Wie strerror() gibt die Funktion strerrordesc_np() einen Zeiger auf eine
       Zeichenkette zurück, die den Fehlercode des im Argument errnum
       übergebenen Fehlers enthält, jedoch mit dem Unterschied, dass die
       zurückgegebene Zeichenkette nicht anhand der aktuellen Locale übersetzt
       ist.

       Die Funktion strerrorname_np() gibt einen Zeiger auf eine Zeichenkette
       zurück, die den Namen des im Argument errnum übergebenen Fehlers enthält.
       Ist beispielsweise EPERM als Argument angegeben, gibt diese Funktion
       einen Zeiger auf die Zeichenkette »EPERM« zurück.

   strerror_r()
       Die Funktion strerror_r() ähnelt strerror(), ist aber threadsicher. Diese
       Funktion ist in zwei Versionen verfügbar: eine in POSIX.1-2001
       beschriebene XSI-konforme Version (verfügbar seit Glibc 2.3.4, aber vor
       Glibc 2.13 nicht POSIX-konform) und eine GNU-spezifische Version
       (verfügbar seit Glibc 2.0). Die XSI-konforme Version wird durch die in
       der ÜBERSICHT angegebenen  Feature-Test-Makroeinstellungen
       bereitgestellt; anderenfalls wird die GNU-Version verwendet. Ohne
       explizit vereinbarte Feature-Test-Makros wird (seit Glibc 2.4)
       standardmäßig _POSIX_C_SOURCE mit dem Wert 200112L belegt, sodass
       standardmäßig die XSI-Variante von strerror_r() verwendet wird.

       Die XSI-konforme strerror_r() ist für portable Anwendungen vorzuziehen.
       Sie gibt die Fehlerzeichenkette im vom Nutzer bereitgestellten Puffer buf
       der Länge buflen zurück.

       Die GNU-spezifische strerror_r() gibt einen Zeiger auf eine Zeichenkette
       zurück, die die Fehlernachricht enthält. Dies kann entweder ein Zeiger
       auf eine Zeichenkette sein, die die Funktion in buf speichert, oder ein
       Zeiger auf irgendeine (unveränderbare statische) Zeichenkette(wobei dann
       buf nicht genutzt wird). Wenn die Funktion in buf eine Zeichenkette
       speichert, werden höchstens buflen Bytes gespeichert (die Zeichenkette
       kann gekürzt werden, wenn buflen zu klein und errnum unbekannt ist). Die
       Zeichenkette enthält immer ein abschließendes NULL-Byte ('\0').

   strerror_l()
       strerror_l() verhält sich wie strerror(), aber weist errnum einer
       locale-abhängigen Fehlermeldung in der durch locale angegebenen Locale
       zu. Das Verhalten von strerror_l() ist nicht definiert, wenn locale das
       spezielle Locale-Objekt LC_GLOBAL_LOCALE ist oder kein gültiges Handle
       für ein Locale-Objekt.

RÜCKGABEWERT
       Die Funktionen strerror(), strerror_l() und die GNU-spezifische
       strerror_r() geben die entsprechende Zeichenkette mit der
       Fehlerbeschreibung zurück oder eine Nachricht »Unbekannter Fehler nnn«,
       wenn die Fehlernummer unbekannt ist.

       Bei Erfolg geben strerrorname_np() und strerrordesc_np() die
       entsprechende den Fehler beschreibende Zeichenkette zurück. Falls errnum
       eine unzulässige Fehlernummer ist, geben diese Funktionen NULL zurück.

       Die XSI-konforme Funktion strerror_r() gibt bei Erfolg 0 zurück. Im
       Fehlerfall wird eine positive Fehlernummer (seit Glibc 2.13) oder -1
       zurückgegeben und errno mit einem Wert belegt, der den Fehler angibt
       (Glibc vor Version 2.13).

       POSIX.1-2001 und POSIX.1-2008 verlangen, dass ein erfolgreicher Aufruf
       von strerror() oder strerror_l() errno unverändert belässt. Sie merken
       an, dass wegen des nicht definierten Rückgabewerts zur Anzeige eines
       Fehlers eine Anwendung zur Fehlerprüfung vor dem Aufruf errno auf Null
       setzen und nach dem Aufruf überprüfen sollte.

FEHLER
       EINVAL Der Wert von errnum ist keine gültige Fehlernummer.

       ERANGE Es wurde unzureichender Speicher für die Aufnahme der
              Fehler-Zeichenkette bereitgestellt.

VERSIONEN
       Die Funktion strerror_l() kamen erstmals in Glibc 2.6 vor.

ATTRIBUTE
       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt
       verwandten Ausdrücke.

       ┌───────────────────┬───────────────────────┬─────────────────────────┐
       │Schnittstelle      Attribut              Wert                    │
       ├───────────────────┼───────────────────────┼─────────────────────────┤
       │strerror()         │ Multithread-Fähigkeit │ MT-Unsafe race:strerror │
       ├───────────────────┼───────────────────────┼─────────────────────────┤
       │strerrorname_np(), │ Multithread-Fähigkeit │ MT-Safe                 │
       │strerrordesc_np()  │                       │                         │
       ├───────────────────┼───────────────────────┼─────────────────────────┤
       │strerror_r(),      │ Multithread-Fähigkeit │ MT-Safe                 │
       │strerror_l()       │                       │                         │
       └───────────────────┴───────────────────────┴─────────────────────────┘
KONFORM ZU
       strerror() wird von POSIX.1-2001, POSIX.1-2008, C89 und C99 spezifiziert.
       strerror_r() wird von POSIX.1-2001 spezifiziert.

       strerror_l() ist in POSIX.1-2008 spezifiziert.

       Die GNU-spezifischen Funktionen strerror_r(), strerrorname_np() und
       strerrordesc_np() sind eine nicht standardisierte Erweiterungen.

       POSIX.1-2001 gestattet strerror() das Setzen von errno wenn der Aufruf
       einen Fehler bewirkt, gibt aber nicht vor, welchen Wert die Funktion im
       Fehlerfall zurückgeben sollte. Auf einigen Systemen gibt strerror() NULL
       zurück, wenn die Fehlernummer nicht bekannt ist. Auf anderen Systemen
       gibt strerror() eine Meldung etwa wie »Fehler nnn aufgetreten« und setzt
       errno auf EINVAL, wenn die Fehlernummer unbekannt ist. C99 und
       POSIX.1-2008 verlangen, dass der Rückgabewert von NULL verschieden ist.

ANMERKUNGEN
       Die GNU-C-Bibliothek verwendet einen Puffer von 1024 Zeichen für
       strerror(). Diese Puffergröße sollte daher ausreichen, um einen Fehler
       ERANGE beim Aufruf von strerror_r() zu vermeiden.

       strerrorname_np() und strerrordesc_np() sind weder multithread-fähig noch
       asynchronsignalsicher.

SIEHE AUCH
       err(3), errno(3), error(3), perror(3), strsignal(3), locale(7)

KOLOPHON
       Diese Seite ist Teil der Veröffentlichung 5.10 des Projekts
       Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie
       Fehler gemeldet werden können sowie die aktuelle Version dieser Seite
       finden sich unter https://www.kernel.org/doc/man-pages/.


ÜBERSETZUNG
       Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard
       Schauer <Martin.E.Schauer@gmx.de> und Mario Blättermann
       <mario.blaettermann@gmail.com> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General
       Public License Version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ oder
       neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG
       übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
       Sie bitte eine E-Mail an die Mailingliste der Übersetzer ⟨debian-l10n-
       german@lists.debian.org⟩.



                                1. November 2020                     STRERROR(3)