errno:系统调用失败时,会将全局整形变量 errno 设置为一个正值,以标识具体的错误。
程序应包含<errno.h>头文件,该文件提供了对 errno 的声明,以及一组针对各种错误编号而定义的常量。
如果调用系统调用和库函数成功,errno 绝不会被重置为 0,故此,该变量值不为 0,可能
是之前调用失败造成的。因此,在进行错误检查时,必须坚持首先检查函数的返回值是否表
明调用出错,然后再检查 errno 确定错误原因。
perror:打印出其 msg 参数所指向的字符串,紧跟一条与当前 errno 值相对应的消息。
#include <stdio.h>
void perror(const char *msg);
strerror:针对其 errnum 参数中所给定的错误号,返回相应的错误字符串。
#include <string.h>
char *strerror(int errnum);
测试用例(打开一个不存在文件报错):
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
int errnoTest()
{
char name[10] = "noFile";
int fd = open(name,O_RDONLY);
if(fd < 0)
{
perror("open");
printf("open strerror:%s\n",strerror(errno));
return -1;
}
close(fd);
return 0;
}
int main()
{
errnoTest();
return 1;
}
输出结果:
open: No such file or directory
open strerror:No such file or directory