Linux 系统应用编程——出错处理(errno)

本文介绍了Linux系统编程中的错误处理,重点讲解了errno变量的使用规则、strerror()和perror()函数在打印错误信息上的作用,以及在多线程环境中的注意事项和错误恢复策略。
摘要由CSDN通过智能技术生成

1. errno变量
     文件 <errno.h> 中定义了符号 errno 以及可以赋予它的各种常量,这些常量都是以字符 E 开头。例如,若 errno 等于常量 EACCES,表示产生了权限问题(例如,没有打开所要求文件的足够权限)。

      当 UNIX 函数出错时,常常返回一个负值,而且将整型变量 errno 设置成含有附加信息的各个常量。例如,open 函数如果成功执行则返回一个非负文件描述符,如出错则返回 -1。在 open 出错时,有大约 15 种不同的errno 值(文件不存在、权限问题等)。

对于 errno 应该知道两条规则:

规则一:如果没有出错,则errno的值不会被一个例程清除。
因此,仅当函数的返回值指明出错时,才校验 errno 的值。

规则二:任一函数都不会将errno的值设置为0,在<errno.h>中定义的所有常量都不为0。

 

出错标志 errno 是一个整型数值,这个对于用户提示不够有好。C 标准定义了两个函数,用于帮助打印出错信息:

1)、strerror()

#include <string.h>
#include <errno.h>

char *strerror(int errnum);

返回值:指向消息字符串的指针

此函数将 errnum(它通常就是 errno 值)映射为一个出错信息字符串,并且返回此字符串的指针。

2)、perror()
perror 函数基于 errno 的当前值,在标准出错上产生一条出错信息,然后返回。

#include <stdio.h>

void perror(const c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值