perror — print a system error message
#include <stdio.h>
void
perror( |
const char * | s) ; |
![]() |
Note | |
---|---|---|
|
#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.