STRERROR(3C) Standard C Library Functions STRERROR(3C)

strerror, strerror_r, strerror_l, strerrordesc_np, strerrorname_npget 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 () 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 () 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 () 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 () 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 () 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 () 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:

The value of errnum is not a valid error number.

The strerror_r() function may fail if:

The buflen argument specifies insufficient storage to contain the generated message string.

Messages returned from these functions (other than () 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