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
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
相关文章推荐
- 学习Altas 笔记[js调用重载的方法出错,如何处理]
- 学习Linux之出错处理
- 学习Altas 笔记[js调用重载的方法出错,如何处理]
- Linux学习之出错处理(状态类封装)
- UNIX环境编程学习笔记(1):——出错处理errno
- apue.h及err_sys出错处理
- UNIX环境编程学习笔记(1):——出错处理errno
- ubuntu下《UNIX环境高级编程》(apue.h)编译出错的处理方法
- rhel上配置apue.h及err_sys出错处理
- OS X下UNIX环境高级编程(第三版)学习日志-第一章ChapterI,出错处理
- linux下《UNIX环境高级编程》(apue)源码编译出错的处理方法
- 出错处理APUE-1.7
- 学习Altas 笔记[js调用重载的方法出错,如何处理]
- Linux学习之出错处理(线程安全的日志类封装)
- 70.笔记 MySQL学习——C编写MySQL程序三出错处理和命令选项处理
- 编写一个与3.12节中dup2功能相同的函数,要求不调用fcntl函数,并且要有正确的出错处理(APUE)
- [BOOST]学习使用点滴-1-字符处理[by galphy]
- 李阳疯狂英语学习法之句子处理十步骤
- 6、if 语句对出错的处理
- 学习MySQL多表操作和备份处理