The MAN page tells under the BUG section that "For unknown error numbers, the strerror() function will return its result in a static buffer which may be overwritten by subsequent calls."
Quote:
Originally Posted by Praveen_218
The primary reason to ask this query is because of the fact that the MAN pages themselves not making me sure if the programmer needs to handle any kind of cleanup post calling strerror()?
The man page tells you that the result may be in a static buffer. It tells you this to let you know two things:
You do not need to free the result returned from this function. A static buffer (as in when you use "static" within a function) exists throughout the lifetime of the program and does not need to be released by anyone.
You should not rely on the result being available over multiple calls to strerror(), as in:
This is because it's possible that the result of both calls to strerror() will be a pointer to the same (static) buffer.
Some advice: When asking questions on forums, ask what you really want to ask, as opposed to second-guessing what you want. When you ask where the result of strerror() will be and if you can edit it, my first instinct is to just say "no, don't do any of that forget about it!", but if you just ask whether you should free() the result and why the man page mentions a static buffer, you'll get a much better response.
Hi Friends,
Can any of you explain me about the below line of code?
mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`
Im not able to understand, what exactly it is doing :confused:
Any help would be useful for me.
Lokesha (4 Replies)
Hi,
I've noticed that the permissions output from "ls -l" under SunOS differs from Linux in that after the "rwxrwxrwx" field, there is an additional "+" character that may or may not be there. What is the significance of this character?
Thanks,
Suan (6 Replies)
Hi,
I have line in input file as below:
3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL
My expected output for line in the file must be :
"1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL"
Can someone... (7 Replies)
How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address
and column 3 contains “cc” e-mail address to include with same email.
Sample input file, email.txt
Below is an sample code where... (2 Replies)
Okay, so I have a rather large text file and will have to process many more and this will save me hours of work.
I'm not very good at scripting, so bear with me please.
Working on Linux RHEL
I've been able to filter and edit and clean up using sed, but I have a problem with moving lines.
... (9 Replies)
Hello.
System : opensuse leap 42.3
I have a bash script that build a text file.
I would like the last command doing :
print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt
where :
print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies
LEARN ABOUT SUSE
strerror
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);
int strerror_r(int errnum, char *buf, size_t buflen);
/* XSI-compliant */
char *strerror_r(int errnum, char *buf, size_t buflen);
/* GNU-specific */
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
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 language. This string must not be modified by the application, but may be
modified by a subsequent call to perror(3) or strerror(). No library function will modify this string.
The strerror_r() function is similar to strerror(), but is thread safe. This function is available in two versions: an XSI-compliant ver-
sion specified in POSIX.1-2001 (available since glibc 2.3.4), 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_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 termi-
nating null byte.
RETURN VALUE
The strerror() and the GNU-specific strerror_r() functions return the appropriate error description string, or an "Unknown error nnn" mes-
sage if the error number 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 description 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 nonstandard 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
function 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)COLOPHON
This page is part of release 3.25 of the Linux man-pages project. A description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
2009-03-30 STRERROR(3)