.\" Copyright (c) 1994 Michael Haardt (u31b3hs@pool.informatik.rwth-aachen.de), Sat Jun 4 20:38:26 MET DST 1994 .\" Copyright (c) 1995 Michael Haardt (michael@cantor.informatik.rwth-aachen.de), Thu Mar 16 18:46:23 MET 1995 .\" .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, write to the Free .\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, .\" USA. .\" .\" German translation Fri May 16 23:41:15 1996 by Patrick Rother .\" and Martin Schulze (joey@infodrom.north.de) .\" Modified Mon Jun 10 01:05:22 1996 by Martin Schulze (joey@linux.de) .\" .TH PERROR 3 "17. Januar 1996" "" "Bibliotheksfunktionen" .SH BEZEICHNUNG perror \- gib eine Systemfehlermeldung aus .SH BEZEICHNUNG .B #include .sp .BI "void perror(const char " *s ); .sp .B #include .sp .BI "const char *" sys_errlist []; .br .BI int " sys_nerr ; .SH BESCHREIBUNG Die Funktion .B 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 .I 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 .I 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 .IR sys_errlist "[]" mit Index .I errno kann verwendet werden, um die Fehlermeldungen ohne den Zeilenumbruch zu erhalten. Der größte gültige Index für .IR sys_errlist "[]" ist .IR 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 .I errno auf einen Wert, der beschreibt, was schief lief. (Diese Werte können in .I gefunden werden.) Viele Bibliotheksfunktionen verhalten sich genauso. Die Funktion .B perror() übersetzt diesen Fehlercode in eine für Menschen lesbare Form. Man beachte, dass .I 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 .I errno gesichert werden, wenn auf den fehlgeschlagenen Aufruf nicht sofort ein Aufruf von .B perror() folgt. .SH "KONFORM ZU" ANSI C, POSIX .SH "SIEHE AUCH" .BR errno (2), .BR strerror (3).