Linux下的C语言函数perror

perror的函数原型为`void perror(const char *s)`

这个函数会先输出你传给他的实参 s 所指的字符串,后面再加上错误原因字符串。此错误原因依照全局变量errno 的值来决定要输出的字符串。

在库函数中有个errno变量,每个errno值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了errno的值。perror函数只是将你输入的一些信息和现在的errno所对应的错误一起输出。只有当一个库函数失败时,errno才会被设置。当函数成功运行时,errno的值不会被修改。这意味着我们不能通过测试errno的值来判断是否有错误存在。反之,只有当被调用的函数提示有错误发生时检查errno的值才有意义。查看错误代码errno是调试程序的一个重要方法。当linux C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。

例:

`#include<stdio.h>

#include<stdlib.h>

int main()

{

char *p="abcd";

FILE *fp;

fp=fopen("asfaasf.txt","r");

if(fp==NULL)

{

perror(p);

exit(1);

}

return 0; } `

那么,他的输出结果就会是`abcd: No such file or directory`

也就是说,这个函数会先输出你给他传的字符串,在输出错误原因
--------------------- 
作者:吕白_ 
来源:CSDN 
原文:https://blog.csdn.net/weixin_36888577/article/details/75114030?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/weixin_41182157/article/details/83043813