NAME
perror - print a system error message
SYNOPSIS
#include <stdio.h>
I void perror(const char *s );
#include <errno.h>
I const char * sys_errlist [];
I int sys_nerr ;
I int errno ;
DESCRIPTION
The routine
R 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
R errno ,
which is set when errors occur but not
cleared when non-erroneous calls are made.
The global error list
R 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
R sys_nerr -1.
Be careful when directly accessing this list because new error values
may not have been added to
R 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
R <errno.h> .)
Many library functions do likewise.
The function
R 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
R perror (),
the value of
errno
should be saved.
CONFORMING TO
The function
R 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.
NOTES
The externals
sys_nerr
and
sys_errlist
are defined by glibc, but in
R <stdio.h> .
_GNU_SOURCE
is defined, the symbols
SEE ALSO