错误处理:
许多系统调用和函数在失败后,会在失败时设置外部变量errno的值来指明失败原因。许多不同的函数库都把这个变量作为报告错误的标准方法。程序必须在函数报告出错后立刻
检查errno变量,因为它可能被下一个函数调用所覆盖,即使下一个函数本身没有出错,
也可能会覆盖这个变量。错误代码的取值和含义都在头文件errno.h中,如下所示:
EPERM:操作不允许
ENOENT:文件或目录不存在
EINTR:系统调用被中断
EIO:I/O错误
EBUSY:设备或资源繁忙
EEXIST:文件存在
EINVAL:无效参数
EMFILE:打开的文件过多
ENODEV:设备不存在
EISDIR:是一个目录
ENOTDIR:不是一个目录
常用的用来报告出现的错误的函数:strerror perror
strerror函数:将错误代码映射为一个字符串,该字符串对发生的错误类型进行说明。
函数原型:
#include <string.h> char *strerror(int errnum);
perror函数:将errno变量中报告的当前错误映射到一个字符串,并把它输出到标准错误输出流。
函数原型:
函数原型:
#include <stdio.h> void perror(const char *s);