01-29-2013
Quote:
Originally Posted by
Praveen_218
John,
I was confused especially after reading the MAN page itself that mentioned of memory location for “unknown error numbers” (which I referred above) but didn't talk of the memory location of the address returned by this system call under normal circumstances.
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()? Just like the call to stat(), lstat(), fstat() which create objects of type struct stat on the heap itself (whose address is returned through the pointer struct stat *sb) and puts the onus of the cleanup on the programmer only.
Available examples too didn't give the clarity as they all called the function strerror() and used the address returned into their processing and were of just few lines only. Hence I was not getting sure of the error handling aspect of the few liner examples.
The code I was working was critical enough not to have scope for silly errors. Hence couldn't have overlooked the cleanup part if the allocation happens to be on the heap and couldn't have just called to free the address either if it belonged to a different memory region.
Hope you got the dilemma making me forward this query to the forum.
If you call strerror(errno), after getting an error indication from a function that sets errno, strerror() will probably return a pointer to a statically allocated string. If you call strerror(
random) with a value that is not a valid error number on your system, strerror() may return a pointer to a string like "Unknown error number xxx" where xxx is
random converted to a decimal digit string. The application calling strerror() doesn't need to free the memory to which the return value from strerror() points in either case. But, if you intend to call strerror() multiple times and print the results later, you need to allocate space for a buffer to hold the returned string, copy it to that buffer, and free the buffer when you are done with it.
8 More Discussions You Might Find Interesting
1. Programming
i have a program using the select function but i want to convert it to poll... how can i do this? thanks in advance... :) (1 Reply)
Discussion started by: rbolante
1 Replies
2. UNIX for Dummies Questions & Answers
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)
Discussion started by: Lokesha
4 Replies
3. HP-UX
Hi people!
I've got this own library:
--------------------------------------------
Personal.h
--------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h>
#include <stdarg.h>
#include <string.h> ... (0 Replies)
Discussion started by: donatoll
0 Replies
4. Solaris
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)
Discussion started by: sayeo
6 Replies
5. Shell Programming and Scripting
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)
Discussion started by: shis100
7 Replies
6. UNIX for Dummies Questions & Answers
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)
Discussion started by: asjaiswal
2 Replies
7. Shell Programming and Scripting
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)
Discussion started by: rex007can
9 Replies
8. Shell Programming and Scripting
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 LINUX
strerror_l
STRERROR(3) Linux Programmer's Manual STRERROR(3)
NAME
strerror, strerror_r, strerror_l - 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 */
char *strerror_l(int errnum, locale_t locale);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
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 language. (For example, if errnum is EINVAL, the returned description
will be "Invalid argument".) This string must not be modified by the application, but may be modified by a subsequent call to strerror()
or strerror_l(). No other library function, including perror(3), will modify this string.
strerror_r()
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, but not POSIX-compliant until glibc 2.13), and a GNU-specific version (avail-
able 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 ('