perror — print a system error message
#include <stdio.h>
void
perror( |
const char * | s) ; |
#include <errno.h> const char *sys_errlist[]; int sys_nerr; int errno;
The routine perror
()
produces a message on the standard error output, describing
the last error encountered during a call to a system or
library function. First (if s
is not NULL and *s
is not a null byte ('\0'))
the argument string s
is printed, followed by a colon and a blank. Then the message
and a new-line.
To be of most use, the argument string should include the
name of the function that incurred the error. The error
number is taken from the external variable errno
, which is set when errors occur but
not cleared when non-erroneous calls are made.
The global error list sys_errlist
[] indexed by
errno
can be used to obtain the
error message without the newline. The largest message number
provided in the table is sys_nerr
−1. Be careful
when directly accessing this list because new error values
may not have been added to sys_errlist
[].
When a system call fails, it usually returns −1 and
sets the variable errno
to a
value describing what went wrong. (These values can be found
in <errno.h>
.) Many
library functions do likewise. The function perror
() serves to translate this error
code into human-readable form. Note that errno
is undefined after a successful
library call: this call may well change this variable, even
though it succeeds, for example because it internally used
some other library function that failed. Thus, if a failing
call is not immediately followed by a call to perror
(), the value of errno
should be saved.
The function perror
() and
the external errno
(see errno(3)) conform to C89,
C99, 4.3BSD, POSIX.1-2001. The externals sys_nerr
and sys_errlist
conform to
BSD.
The externals sys_nerr
and sys_errlist
are defined by
glibc, but in <stdio.h>
. _GNU_SOURCE
is defined, the symbols
err(3), errno(3), error(3), strerror(3)
|