STRERROR(3C) | Standard C Library Functions | STRERROR(3C) |
strerror
,
strerror_r
, strerror_l
,
strerrordesc_np
,
strerrorname_np
— get error
message string
Standard C Library (libc, -lc)
#include
<string.h>
char *
strerror
(int errnum);
int
strerror_r
(int errnum,
char *strerrbuf, size_t
buflen);
char *
strerror_l
(int errnum,
locale_t loc);
const char *
strerrordesc_np
(int errnum);
const char *
strerrorname_np
(int errnum);
The
strerror
()
function maps the error number in errnum to an error
message string, and returns a pointer to that string. It uses the same set
of error messages as perror(3C). The
returned string should not be overwritten. The string will be translated
based on the current locale.
The
strerror_r
()
function maps the error number in errnum to an error
message string and returns the string in the buffer pointed to by
strerrbuf with length
buflen.
The
strerror_l
()
function maps the error number in errnum to an
error message string in the locale indicated by loc.
The returned string should not be overwritten. If loc
is passed the NULL
pointer, then the locale of the
calling thread's current locale will be used instead, like
strerror
().
Because the
strerror
()
and strerror_l
() functions, return localized strings
in the event of an unknown error, one must use the value of
errno to detect an error. Callers should first set
errno to 0 before the call to either
function and then check the value of errno after the
call. If the value of errno is non-zero then an error
has occurred.
The
strerrordesc_np
()
function behaves the same as strerror
(), but will
always return the error message string in the C locale and will not provide
a translate message. Unlike strerror
(), unknown
error messages will return a NULL
pointer. Clearing
errno prior to calling
strerrordesc_np
() is still advised, as with
strerror
().
The
strerrorname_np
()
function translates errnum into the string name of the
error constant. For example: “EIO
”,
“EINTR
”, etc. When passed the value of
0, there is no traditional error string. To match originating
implementations, the string “0” is returned in that case.
Upon successful completion, strerror
() and
strerror_l
() return a pointer to the generated
message string. Otherwise, they set errno and returns
a pointer to an error message string. They return the localized string
“Unknown error” if errnum is not a valid
error number.
Upon successful completion, strerror_r
()
returns 0. Otherwise it sets errno
and returns the value of errno to indicate the error.
It returns the localized string “Unknown error” in the buffer
pointed to by strerrbuf if
errnum is not a valid error number.
Upon successful completion, the
strerrordesc_np
() function returns the C locale's
generated message string. Otherwise, NULL
is
returned and errno is set. Unlike
strerror
(), this occurs when a string's translation
is not known.
Upon successful completion, the
strerrorname_np
() function returns the C language
constant name of the error. Otherwise, NULL
is
returned and errno is set.
These functions may fail if:
EINVAL
The strerror_r
() function may fail if:
ERANGE
Messages returned from these functions (other than
strerrordesc_np
()
and strerrorname_np
()) are in the native language
specified by the LC_MESSAGES
locale category. See
setlocale(3C) and
uselocale(3C).
gettext(3C), perror(3C), setlocale(3C), uselocale(3C), attributes(7), standards(7)
April 6, 2024 | OmniOS |