Sponsored Content
Top Forums Programming Small query regarding function "char * strerror(int errnum)" Post 302762859 by JohnGraham on Tuesday 29th of January 2013 06:14:24 AM
Old 01-29-2013
Quote:
Originally Posted by Praveed_218
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:
  1. 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.
  2. You should not rely on the result being available over multiple calls to strerror(), as in:
    Code:
    char *err1 = strerror(errno);
    some_call();
    char *err2 = strerror(errno);
    printf("Got errors %s and %s\n", err1, err2);

    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.
 

8 More Discussions You Might Find Interesting

1. Programming

How to convert the "select" function into a "poll" function

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

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

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

ERROR: more than one instance of overloaded function "vprintf" has "C" linkage

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

significance of "+" char in SunOS "ls -l" output

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

awk command to replace ";" with "|" and ""|" at diferent places in line of file

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

Using "mailx" command to read "to" and "cc" email addreses from input file

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

Move a line containg "char" above line containing "xchar"

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

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

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
strerror(3)						     Library Functions Manual						       strerror(3)

NAME
strerror, strerror_r - Access message explaining function error LIBRARY
Standard C Library (libc.so, libc.a) SYNOPSIS
#include <string.h> char *strerror( int errnum); The following function does not conform to current standards and is supported only to maintain backward compatibility. int strerror_r( int errnum, char *strerrbuf, int buflen); STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: strerror(): XSH4.2 Refer to the standards(5) reference page for more information about industry standards and associated tags. PARAMETERS
Specifies an error-number value. [Tru64 UNIX] Specifies a buffer that will hold the error message. [Tru64 UNIX] Specifies the length of the buffer. DESCRIPTION
The strerror() function maps the error number specified by the errnum parameter to a error message string and returns a pointer to the string. The string pointed to by the return value is not modified by the program, but may be overwritten by a subsequent call to this function. The implementation behaves as though no other function calls the strerror() function. If a library message catalog is available for the current locale, the strerror() function stores the message from that catalog. Otherwise, it uses the default messages. The LC_MESSAGES category in the setlocale() call specifies the message catalog language, and the NLSPATH environment variable specifies the directory search path for message catalogs. The strerror_r() function is the reentrant version of the strerror() function. It is supported to maintain backward compatibility with operating system versions prior to Tru64 UNIX Version 4.0. RETURN VALUES
On successful completion, the strerror() function returns a pointer to the generated message string. If the error number is not valid, errno is set to indicate the error. On successful completion, strerror_r() provides the error message in strerrbuf, and returns a value of 0 (zero). Otherwise it returns a value of -1. ERRORS
The strerror() and strerror_r() functions set errno to the specified values for the following conditions: The errnum parameter is an invalid error number. [Tru64 UNIX] The strerrorbuf is inaccessible to the strerror_r() function. Note that the strerror_r() function truncates the error message if strerrbuf is too small. RELATED INFORMATION
Functions: intro(2), catgets(3), catopen(3), perror(3), setlocale(3) Standards: standards(5) delim off strerror(3)
All times are GMT -4. The time now is 02:43 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy