BEZEICHNUNG
strerror, strerror_r, strerror_l - gibt eine Zeichenkette zurück, die den Fehlercode beschreibt
ÜBERSICHT
#include <string.h>
char *strerror(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)):
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.
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.
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.
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-spezifische Funktion strerror_r() ist eine nicht standardisierte Erweiterung.
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.
SIEHE AUCH
err(3), errno(3), error(3), perror(3), strsignal(3), locale(7)
KOLOPHON
Diese Seite ist Teil der Veröffentlichung 5.07 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 [AT] gmx.de> und Mario Blättermann <mario.blaettermann [AT] gmail.com> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 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 <debian-l10n-german [AT] lists.org>.