Linux下的C语言函数perror

最近在看LinuxC这本书时,经常在代码里看见perror这个函数,并且后跟:“错误代码存入errno中,详细错误代码请参考man手册。”

查过后做一下笔记

使用perror这个函数要包含<stdlib.h>这个头文件

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`

也就是说,这个函数会先输出你给他传的字符串,在输出错误原因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值