我的“exit(0)”函数将“:Success”打印到stdout。我怎么能阻止这个?

时间:2014-01-30 02:58:43

标签: c unix

我已经google了。我无法弄清楚发生了什么。

:此:

perror("some error message");
exit(0);

会将此打印到stdout:

“一些错误消息:成功”

3 个答案:

答案 0 :(得分:3)

perror打印出“成功”,而不是exit(0)

原因是在调用perror之前,没有设置错误(因此errno为0,这是程序启动时的默认值)。因此perror打印出Success

检查这个

http://www.cplusplus.com/reference/cstdio/perror/

答案 1 :(得分:1)

请参阅perror perror<errno.h>接受一个参数并将其打印出来,后跟冒号和相关的错误消息,这可能有助于解释为什么某些东西不能正常工作。在你的情况下,没有错误,因此打印出的唯一相关信息是“好的,从这里看起来一切都很好。”

如果出现错误,您可以通过加入errno来测试man page的值。如果perror设置为0以外的任何值,则表示某种失败(这就是您使用perror的原因)。如果它设置为0,一切都应该没问题,perror打印“成功”。

使用char * c = malloc(1024); if(c == NULL) perror("malloc"); 的正确方法是在检测到错误时使用它向用户打印有意义的错误消息。例如:

exit(0)

{{1}}无关紧要。

答案 2 :(得分:0)

perror():获取错误编号的人类可读字符串,您可以为错误消息指定格式以获取与标准错误输出不同的内容,如果您没有定义任何内容,则会收到“成功”消息

perror("some error message");  // prints "some error message: Success", because no error occurs.
exit(0); //exit with code "0"

更多信息C perror()C++ perror()