[英]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
。
检查一下
请参阅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.