perror

Autres langues

Langue: de

Version: 17. Januar 1996 (openSuse - 09/10/07)

Autres sections - même nom

Section: 3 (Bibliothèques de fonctions)

BEZEICHNUNG

perror - gib eine Systemfehlermeldung aus

BEZEICHNUNG

#include <stdio.h>

void perror(const char *s);

#include <errno.h>

const char *sys_errlist[];
int sys_nerr ;

BESCHREIBUNG

Die Funktion perror() erzeugt eine Meldung auf der Standardfehlerausgabe, die den zuletzt aufgetretenen Fehler beschreibt, der während eines Systemaufrufs oder einer Bibliotheksfunktion aufgetreten ist. Der Argumentstring s wird zuerst ausgegeben, danach ein Doppelpunkt und ein Leerzeichen und danach die Meldung mit einem Zeilenvorschub. Um eine maximale Nützlichkeit zu erreichen sollte der Argumentstring den Namen der Funktion enthalten, in dem der Fehler aufgetreten ist. Die Fehlernummer wird aus der externen Variable errno entnommen, die gesetzt wird wenn ein Fehler auftritt, aber nicht gelöscht wird, wenn Aufrufe getätigt werden, die keinen Fehler liefern.

Die globale Fehlerliste sys_errlist[] mit Index errno kann verwendet 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.

Wenn ein Systemaufruf fehlschlägt, gibt er normalerweise -1 zurück und setzt die Variable errno auf einen Wert, der beschreibt, was schief 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. Man beachte, dass errno nach erfolgreichem Aufruf einer Bibliotheksfunktion undefiniert ist: Der Aufruf kann die Variable aber sehrwohl verändern, auch wenn er erfolgreich ist, zum Beispiel, wenn die Routine intern weitere Bibliotheksfunktionen verwendet, die fehlgeschlagen sind. Daher sollte der Wert von errno gesichert werden, wenn auf den fehlgeschlagenen Aufruf nicht sofort ein Aufruf von perror() folgt.

KONFORM ZU

ANSI C, POSIX

SIEHE AUCH

errno(2), strerror(3).