User login |
strerror_r (3)
STRERROR(3) Linux Programmer's Manual STRERROR(3)
NAME
strerror, strerror_r - return string describing error number
SYNOPSIS
#include <string.h>
char *strerror(int errnum);
char *strerror_r(int errnum, char *buf, size_t buflen);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
The XSI-compliant version of strerror_r() is provided if:
(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE
DESCRIPTION
The strerror() function returns a string describing the error code
passed in the argument errnum, possibly using the LC_MESSAGES part of
the current locale to select the appropriate language. This string
must not be modified by the application, but may be modified by a sub-
sequent call to perror(3) or strerror(). No library function will mod-
ify this string.
The strerror_r() function is similar to strerror(), but is thread safe.
This function is available in two versions: an XSI-compliant version
specified in POSIX.1-2001 (available since glibc 2.3.4), and a GNU-spe-
cific version (available since glibc 2.0). The XSI-compliant version
is provided with the feature test macros settings shown in the SYNOP-
SIS; otherwise the GNU-specific version is provided. If no feature
test macros are explicitly defined, then (since glibc 2.4)
_POSIX_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 the string always includes a terminating null
byte.
RETURN VALUE
The strerror() and strerror_r() functions return the appropriate error
description string, or an "Unknown error nnn" message if the error num-
ber is unknown.
The XSI-compliant strerror_r() function returns 0 on success; on error,
-1 is returned and errno is set to indicate the error.
ERRORS
EINVAL The value of errnum is not a valid error number.
ERANGE Insufficient storage was supplied to contain the error descrip-
tion string.
CONFORMING TO
strerror() is specified by POSIX.1-2001, C89, C99. strerror_r() is
specified by POSIX.1-2001.
The GNU-specific strerror_r() function is a non-standard extension.
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()
returns 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.
SEE ALSO
err(3), errno(3), error(3), perror(3), strsignal(3)
2007-07-26 STRERROR(3)
|