void
perror(
const char *string
)
char *
strerror(
int errnum
)
int
strerror_r(
int errnum
, char *strerrbuf
, size_t buflen
)
),
strerror_r(
),
and
perror(
)
functions look up the language-dependent error message
string corresponding to an error number.
The
strerror()
function accepts an error number argument
errnum
and returns a pointer to the corresponding
message string.
The
strerror_r()
function renders the same result into
strerrbuf
for a maximum of
buflen
characters and returns 0 upon success.
The
perror()
function finds the error message corresponding to the current
value of the global variable
errno
(intro(2))
and writes it, followed by a newline, to the
standard error file descriptor.
If the argument
string
is
non-NULL
and does not point to the nul character,
this string is prepended to the message
string and separated from it by
a colon and space
(``:
'');
otherwise, only the error message string is printed.
If the error number is not recognized, these functions pass an error message
string containing
``Unknown error:
''
followed by the error number in decimal.
To warn about this,
strerror()
sets
errno
to
EINVAL
,
and
strerror_r()
returns
EINVAL
.
Error numbers recognized by this implementation fall in
the range 0 <
errnum
<
sys_nerr
.
If insufficient storage is provided in
strerrbuf
(as specified in
buflen
)
to contain the error string,
strerror_r()
returns
ERANGE
and
strerrbuf
will contain an error message that has been truncated and
NUL
terminated to fit the length specified by
buflen
.
The message strings can be accessed directly using the external
array
sys_errlist.
The external value
sys_nerr
contains a count of the messages in
sys_errlist.
The use of these variables is deprecated;
strerror()
or
strerror_r(
)
should be used instead.
)
and
strerror(
)
functions conform to
ISO/IEC 9899:1999 (``ISO C99'') .
The
strerror_r(
)
function conforms to
IEEE Std 1003.1-2001 (``POSIX.1'') .
)
and
perror(
)
functions first appeared in
4.4BSD.
The
strerror_r(
)
function first appeared in
NetBSD4.0.
)
function will return its result in a static buffer which
may be overwritten by subsequent calls.
The return type for
strerror()
is missing a type-qualifier; it should actually be
Programs that use the deprecated sys_errlist variable often fail to compile because they declare it inconsistently.