Provided by: manpages-de-dev_4.15.0-9_all bug

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.

       Die Funktionen strerrorname_np() und strerrordesc_np() kamen erstmals in Glibc 2.32 vor.

ATTRIBUTE

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

       ┌───────────────────┬───────────────────────┬─────────────────────────────────────────────┐
       │SchnittstelleAttributWert                                        │
       ├───────────────────┼───────────────────────┼─────────────────────────────────────────────┤
       │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.13  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⟩.

                                          22. März 2021                               STRERROR(3)