BEZEICHNUNG¶
strerror, strerror_r - 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 */
Mit Glibc erforderliche Makros (siehe
feature_test_macros(7)):
Die XSI-konforme Version von
strerror_r() wird bereitgestellt, falls:
(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
&& ! _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(). Diese Zeichenkette
wird von keiner Bibliotheksfunktion, inklusive
perror(3),
verändert.
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_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.
RÜCKGABEWERT¶
Die Funktionen
strerror() und die GNU-spezifische
strerror_r()
gibt die entsprechende Zeichenkette mit der Fehlerbeschreibung zurück
oder eine Nachricht »Unbekannter Fehler nnn«, wenn die Fehlernummer
unbekannt ist.
POSIX.1-2001 und POSIX.1-2008 verlangen, dass ein erfolgreicher Aufruf von
strerror(3) 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.
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).
FEHLER¶
- EINVAL
- Der Wert von errnum ist keine gültige
Fehlernummer.
- ERANGE
- Es wurde unzureichender Speicher für die Aufnahme der
Fehler-Zeichenkette bereitgestellt.
strerror() wird von POSIX.1-2001, C89, C99 spezifiziert.
strerror_r() wird von POSIX.1-2001 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.
SIEHE AUCH¶
err(3),
errno(3),
error(3),
perror(3),
strsignal(3)
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux-
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
gemeldet werden können, finden sich unter
http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard
Schauer <Martin.E.Schauer@gmx.de> 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@lists.debian.org>.