perror - eine Systemfehlermeldung ausgeben
Standard-C-Bibliothek (
libc,
-lc)
#include <stdio.h>
void perror(const char *s);
#include <errno.h>
int errno; /* Nicht wirklich auf diese Weise deklariert; siehe errno(3). */
[[veraltet]] const char *const sys_errlist[];
[[veraltet]] int sys_nerr;
sys_errlist,
sys_nerr:
Von Glibc 2.19 bis 2.31:
_DEFAULT_SOURCE
Glibc 2.19 und älter:
_BSD_SOURCE
Die Funktion
perror() schreibt eine Meldung auf die
Standardfehlerausgabe, die den zuletzt aufgetretenen Fehler beschreibt, der
während eines Aufrufs einer System- oder Bibliotheksfunktion
aufgetreten ist.
Zuerst wird (falls
s nicht NULL und
*s kein Nullbyte
(»\0\[u00AB]) ist) die Argumentenzeichenkette
s, danach ein
Doppelpunkt, ein Leerzeichen und dann die eine Fehlermeldung, die dem
aktuellen Wert von
errno entspricht, gefolgt von einem Zeilenvorschub
ausgegeben.
Um am nützlichsten zu sein, sollte die Argumentenzeichenkette den Namen
der Funktion enthalten, die den Fehler auslöste.
Die globale Fehlerliste
sys_errlist[], die mit
errno indiziert
werden kann, kann verwandt werden, um die Fehlermeldungen ohne den
Zeilenumbruch zu erhalten. Der größte gültige Index
für
sys_errlist[] ist
sys_nerr-1. Vorsicht ist geboten,
wenn direkt auf diese Liste zugegriffen wird, denn neue Fehlerwerte sind
eventuell noch nicht hinzugefügt worden. Die Verwendung von
sys_errlist[] ist heutzutage missbilligt, verwenden Sie stattdessen
strerror(3).
Wenn ein Systemaufruf fehlschlägt, gibt er normalerweise -1 zurück
und setzt die Variable
errno auf einen Wert, der beschreibt, was falsch
lief. (Diese Werte können in
<errno.h> gefunden werden.)
Viele Bibliotheksfunktionen verhalten sich genauso. Die Funktion
perror() übersetzt diesen Fehlercode in eine für Menschen
lesbare Form. Beachten Sie, dass
errno nach erfolgreichem System- oder
Bibliotheksfunktionsaufruf undefiniert ist: Dieser Aufruf kann die Variable
aber sehr wohl ändern, auch wenn er erfolgreich ist – zum
Beispiel, wenn er intern weitere Bibliotheksfunktionen verwendet, die
fehlschlagen. Daher sollte der Wert von
errno gespeichert werden, wenn
auf den fehlgeschlagenen Aufruf nicht sofort ein Aufruf von
perror()
folgt.
Seit Glibc Version 2.32 befinden sich die Definitionen von
sys_nerr und
sys_errlist nicht mehr in
<stdio.h>.
Siehe
attributes(7) für eine Erläuterung der in diesem
Abschnitt verwandten Ausdrücke.
Schnittstelle |
Attribut |
Wert |
perror() |
Multithread-Fähigkeit |
MT-Safe race:stderr |
perror(),
errno: POSIX.1-2001, POSIX.1-2008, C99, 4.3BSD.
Die externen
sys_nerr und
sys_errlist leiten sich aus BSD ab,
werden aber nicht in POSIX.1 spezifiziert.
Die externen
sys_nerr und
sys_errlist sind durch Glibc definiert,
befinden sich aber in
<stdio.h>.
err(3),
errno(3),
error(3),
strerror(3)
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze
<
[email protected]>, Patrick Rother <
[email protected]>, Chris Leick
<
[email protected]> und Mario Blättermann
<
[email protected]> 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 die
Mailingliste
der Übersetzer