您的位置:首页 > 产品设计 > UI/UE

APUE学习之出错处理

2016-08-11 11:51 169 查看
当UNIX函数发生错误时,通常会返回一个负值,而且整形变量errno通常被设置为具有特定信息的值。

errno是全局变量,仅当函数出错才有被改变。对待errno,应注意两条规则
1:如果没有出错,其值不会被例程清除,也就是说,当且仅当函数出错时,马上检查errno的值才有意义。
2:任何函数都不会将errno的值置为0。

C标准定义了两个函数,用于打印出错信息:char *strerror(int errnum)和void perror(const char *msg)。

strerror函数将errnum(通常就是errno的值)映射为出错消息字符串,并返回该字符串的指针。
perror函数基于errno的当前值,在标准错误上产生一条出错消息然后返回。

例子:
#include "apue.h"
#include <errno.h>

int main(int argc, char **argv)
{
fprintf(stderr, "EACCES: %s\n", strerror(EACCES));
errno = ENOENT;
perror(argv[0]);
return 0;
}

./a.out
EACCES: Permission denied
./a.out: No such file or directory
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: