dwww Home | Manual pages | Find package

strerror(3)                Library Functions Manual                strerror(3)

NAME
       strerror,  strerrorname_np,  strerrordesc_np,  strerror_r, strerror_l -
       return string describing error number

LIBRARY
       Standard C library (libc, -lc)

SYNOPSIS
       #include <string.h>

       char *strerror(int errnum);
       const char *strerrorname_np(int errnum);
       const char *strerrordesc_np(int errnum);

       int strerror_r(int errnum, char buf[.buflen], size_t buflen);
                      /* XSI-compliant */

       char *strerror_r(int errnum, char buf[.buflen], size_t buflen);
                      /* GNU-specific */

       char *strerror_l(int errnum, locale_t locale);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       strerrorname_np(), strerrordesc_np():
           _GNU_SOURCE

       strerror_r():
           The XSI-compliant version is provided if:
               (_POSIX_C_SOURCE >= 200112L) && ! _GNU_SOURCE
           Otherwise, the GNU-specific version is provided.

DESCRIPTION
       The strerror() function returns a pointer to a  string  that  describes
       the  error  code  passed  in  the  argument  errnum, possibly using the
       LC_MESSAGES part of the current locale to select the  appropriate  lan-
       guage.   (For  example,  if  errnum is EINVAL, the returned description
       will be "Invalid argument".)  This string must not be modified  by  the
       application,  and  the returned pointer will be invalidated on a subse-
       quent call to strerror() or strerror_l(), or if  the  thread  that  ob-
       tained  the  string  exits.   No other library function, including per-
       ror(3), will modify this string.

       Like strerror(), the strerrordesc_np() function returns a pointer to  a
       string  that  describes  the  error code passed in the argument errnum,
       with the difference that the returned string is not translated  accord-
       ing to the current locale.

       The strerrorname_np() function returns a pointer to a string containing
       the name of the error code passed in the argument errnum.  For example,
       given  EPERM  as  an  argument,  this function returns a pointer to the
       string "EPERM".  Given 0  as  an  argument,  this  function  returns  a
       pointer to the string "0".

   strerror_r()
       strerror_r()  is like strerror(), but might use the supplied buffer buf
       instead of allocating one internally.  This function  is  available  in
       two  versions:  an  XSI-compliant  version  specified  in  POSIX.1-2001
       (available since glibc  2.3.4,  but  not  POSIX-compliant  until  glibc
       2.13),  and  a  GNU-specific  version (available since glibc 2.0).  The
       XSI-compliant version is provided with the feature test macros settings
       shown in the SYNOPSIS; otherwise the GNU-specific version is  provided.
       If  no  feature  test  macros are explicitly defined, then (since glibc
       2.4) _POSIX_C_SOURCE is defined by default with the value  200112L,  so
       that the XSI-compliant version of strerror_r() is provided by default.

       The  XSI-compliant strerror_r() is preferred for portable applications.
       It returns the error string in the user-supplied buffer buf  of  length
       buflen.

       The  GNU-specific strerror_r() returns a pointer to a string containing
       the error message.  This may be either a pointer to a string  that  the
       function  stores in buf, or a pointer to some (immutable) static string
       (in which case buf is unused).  If the function stores a string in buf,
       then at most buflen bytes are stored (the string may  be  truncated  if
       buflen is too small and errnum is unknown).  The string always includes
       a terminating null byte ('\0').

   strerror_l()
       strerror_l()  is like strerror(), but maps errnum to a locale-dependent
       error message in the locale specified by locale.  The behavior of  str-
       error_l()   is  undefined  if  locale  is  the  special  locale  object
       LC_GLOBAL_LOCALE or is not a valid locale object handle.

RETURN VALUE
       The strerror(), strerror_l(), and the GNU-specific  strerror_r()  func-
       tions  return  the appropriate error description string, or an "Unknown
       error nnn" message if the error number is unknown.

       On success, strerrorname_np() and strerrordesc_np() return  the  appro-
       priate error description string.  If errnum is an invalid error number,
       these functions return NULL.

       The  XSI-compliant  strerror_r() function returns 0 on success.  On er-
       ror, a (positive) error number is returned (since glibc 2.13), or -1 is
       returned and errno is set to indicate the error (before glibc 2.13).

       POSIX.1-2001 and POSIX.1-2008 require that a successful  call  to  str-
       error()  or  strerror_l()  shall  leave errno unchanged, and note that,
       since no function return value is reserved to indicate an error, an ap-
       plication that wishes to check for errors should  initialize  errno  to
       zero before the call, and then check errno after the call.

ERRORS
       EINVAL The value of errnum is not a valid error number.

       ERANGE Insufficient  storage was supplied to contain the error descrip-
              tion string.

ATTRIBUTES
       For an explanation of the terms  used  in  this  section,  see  attrib-
       utes(7).
       ┌────────────────────┬───────────────┬────────────────────────────────┐
       │ Interface          Attribute     Value                          │
       ├────────────────────┼───────────────┼────────────────────────────────┤
       │ strerror()         │ Thread safety │ MT-Safe                        │
       ├────────────────────┼───────────────┼────────────────────────────────┤
       │ strerrorname_np(), │ Thread safety │ MT-Safe                        │
       │ strerrordesc_np()  │               │                                │
       ├────────────────────┼───────────────┼────────────────────────────────┤
       │ strerror_r(),      │ Thread safety │ MT-Safe                        │
       │ strerror_l()       │               │                                │
       └────────────────────┴───────────────┴────────────────────────────────┘

       Before glibc 2.32, strerror() is not MT-Safe.

STANDARDS
       strerror()
              C11, POSIX.1-2008.

       strerror_r()
       strerror_l()
              POSIX.1-2008.

       strerrorname_np()
       strerrordesc_np()
              GNU.

       POSIX.1-2001  permits strerror() to set errno if the call encounters an
       error, but does not specify what value should be returned as the  func-
       tion  result in the event of an error.  On some systems, strerror() re-
       turns NULL if the error number is  unknown.   On  other  systems,  str-
       error()  returns  a string something like "Error nnn occurred" and sets
       errno to EINVAL if the error number is unknown.  C99  and  POSIX.1-2008
       require the return value to be non-NULL.

HISTORY
       strerror()
              POSIX.1-2001, C89.

       strerror_r()
              POSIX.1-2001.

       strerror_l()
              glibc 2.6.  POSIX.1-2008.

       strerrorname_np()
       strerrordesc_np()
              glibc 2.32.

NOTES
       strerrorname_np()  and strerrordesc_np() are thread-safe and async-sig-
       nal-safe.

SEE ALSO
       err(3), errno(3), error(3), perror(3), strsignal(3), locale(7), signal-
       safety(7)

Linux man-pages 6.7               2023-10-31                       strerror(3)

Generated by dwww version 1.16 on Mon Jul 13 15:29:35 CEST 2026.