繁体   English   中英

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

[英]My “exit(0)” function prints “: Success” to stdout. How can I stop this?

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

这个:

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

将打印到stdout:

“一些错误信息:成功”

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

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

检查一下

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

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

如果发生错误,您可以通过包含<errno.h>来测试errno的值。 如果将errno设置为0以外的任何值,则表示某种类型的失败(这就是您使用perror )。 如果它设置为0,一切都应该没问题,并且perror打印“成功”。

使用perror的正确方法是在检测到错误时使用它向用户打印有意义的错误消息。 例如:

char * c = malloc(1024);
if(c == NULL) perror("malloc");

exit(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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM