Linux下调用系统函数的错误捕获

        经常在调用linux 系统api 的时候会出现一些错误,比方说使用open(), write() ,creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。               

       在程序代码中包含 #include<errno.h>,然后每次程序调用失败的时候,系统会自动用用错误代码填充errno这个全局变量,这样你只需要读errno这个全局变量就可以获得失败原因了。

        当linux C api函数发生异常时,一般会将errno变量赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,查看错误代码errno是调试程序的一个重要方法。

        errno的定义形式如下所示:
                #define EPERM   1 /* Operation not permitted */

       还有两个与errno相关的函数perror()和strerror(),它们的定义如下所示:
       #include <stdio.h> // void perror(const char *msg);
       #include <string.h> // char *strerror(int errnum);
       perror是错误输出函数,输出格式为:msg:errno对应的错误信息(加上一个换行符);
       strerror 是通过参数 errnum (就是errno),返回对应的错误信息,即errno中的注释字符。
       在《UNIX高级环境编程》一书中的err_sys()函数是这样定义的:

#define err_sys(info)                                                        
{                                                                        
     fprintf(stderr, "%s:%s\n", info, strerror(errno));                
     exit(EXIT_FAILURE);                                                
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值