Visit Our UNIX and Linux User Community


A question about printing error message with perror


 
Thread Tools Search this Thread
Top Forums Programming A question about printing error message with perror
# 1  
Old 08-15-2009
Question A question about printing error message with perror

Dear all,


I use perror in order to print an error message to the standar error. For example
if a C program is called without its two necessary command line parameters
then :

Code:
if (argc != 3)
{
    perror("use: ./myProgram <source file> <target file>\n");
    return 1;
}

Now the problem is whenever this error message is printed, I have this:
Code:
use: ./myProgram <source file> <target file>\n
: Success

What I don't understand is why there is a second line: ":Success"??
Is there a way to remove it? as I want to print an error message, it doesn't
really make sense to print Success.


Thanks in advance,
Kind Regards,
Smilie

Last edited by dariyoosh; 08-15-2009 at 07:37 AM..
# 2  
Old 08-15-2009
Did you read up on what perror() does?
Quote:
Originally Posted by man perror
The perror() function finds the error message corresponding to the current value of the global variable errno and writes it, followed by a newline, to the standard error file descriptor. If the argument s is non-NULL and does not point to the null character, this string is prepended to the message string and separated from it by a colon and space (": "); otherwise, only the error message string is printed.
Since neither you nor any other function set errno, it's probably defaulted to zero, which means success.

If you want to output any error messages that stem from logical errors, I'd suggest writing them to stderr via fprintf.
# 3  
Old 08-15-2009
Quote:
Originally Posted by pludi
Did you read up on what perror() does?
Since neither you nor any other function set errno, it's probably defaulted to zero, which means success.

If you want to output any error messages that stem from logical errors, I'd suggest writing them to stderr via fprintf.

Dear pludi


Thank you very much for your help. Your solution solved my problem.

Code:
if (argc != 3)
{
    fprintf(stderr, "use: ./myProgram <source file> <target file>\n");
    return 1;
}

And it prints only the error message.


Thanks a lot for your help.


Kind Regards,
Smilie

Previous Thread | Next Thread
Test Your Knowledge in Computers #639
Difficulty: Easy
NeXTSTEP was based on UNIX.
True or False?

10 More Discussions You Might Find Interesting

1. Solaris

Display Message Question

I'm have a script that I am creating and I want the dmesg command to only show output for the current day and the day before. What would be the command to make this work? Thanks (8 Replies)
Discussion started by: MattyJ2009
8 Replies

2. Shell Programming and Scripting

Printing a message in file without opening it in perl

Hello friends, i have a perl script as below ... for (0 ..$#values) { ##want to print some message here in Report.txt file print `find /abc/xyz/pqr/$values" -type f -ls` >> Report.txt } I am able to get output of print `find /abc/xyz/pqr/$values" -type f -ls` >> Report.txt in... (2 Replies)
Discussion started by: harpal singh
2 Replies

3. Shell Programming and Scripting

Printing all lines before a specific string and a custom message 2 lines after

Hello all, I need to print all the lines before a specific string and print a custom message 2 lines after that. So far I have managed to print everything up the string, inclusively, but I can't figure out how to print the 2 lines after that and the custom message. My code thus far is:... (4 Replies)
Discussion started by: SEinT
4 Replies

4. Programming

help with C programming, perror

i am trying to use the perror function: something like perror("WRONG!!!"); but when i see the message in the terminal, it comes out like WRONG!!! : Success How can i change it to WRONG!!! : WRONG!!! well i just want to have my own custom message for the part after the colon... (1 Reply)
Discussion started by: omega666
1 Replies

5. UNIX for Dummies Questions & Answers

perror with signals

I have following problem with this code.. First time trough the main loop..... perror gives ....blocked signal:success(all other times gives illlegal seek) Should every time trought the main loop be success?? And the perror otside of main loop...didn't change mask:success That line of code... (2 Replies)
Discussion started by: joker40
2 Replies

6. Post Here to Contact Site Administrators and Moderators

Message Editor question

Hia, this is a very low priority request, but I am slightly annoyed by the behaviour of the tags in the message editor. They behave assymetric in the sense that the opening tag is introducing an empty line, and the closing tag is not, and can't be convinced to do otherwise. I know I am... (1 Reply)
Discussion started by: Andre_Merzky
1 Replies

7. Shell Programming and Scripting

shell script, why isn't if printing message?

Why isn't printing message? 1 #!/bin/sh 2 3 something(){ 4 echo "Inside something" 5 echo $1 $2 6 } 7 val=$(something "Hello " "world") But it prints. 1 #!/bin/sh 2 3 something(){ 4 echo "Inside something" 5 echo $1 $2 6 } 7... (4 Replies)
Discussion started by: cola
4 Replies

8. Programming

does perror() set errno?

here the program gives a odd result: #include <stdio.h> int main(){ perror("first"); perror("next"); return 0; } result: first: Success next: Illegal seek why? any resonable explanation? i found no information about this in man pages. thanks in advance (2 Replies)
Discussion started by: ebd
2 Replies

9. Solaris

Error message printing to Windows on port 515

Hello, We have an application which runs on Windows 2000 that responds to prrint requests by anyone using RFC1179 protocol on port 515. We are getting an error message when submitting print requests from Sun Solaris 9. "Windows 2000 LPD Server Error: Specified printer does not exist"... (0 Replies)
Discussion started by: pauls
0 Replies

10. UNIX for Advanced & Expert Users

“Ostream” object is not printing message on HP-UNIX for debug mode

The following C++ code segment is not working in debug mode build on HP-UNIX machine. It is not printing "Hello World" message on the screen. While it is working fine in release mode build. ============================================== class KLogStreamBuf : public streambuf { public:... (0 Replies)
Discussion started by: heena
0 Replies

Featured Tech Videos