测试结果如下:
edsionte@edsionte-laptop:~/code$ ./error
error: line:30 open():File exists with errno:17
这样就可以显示错误代码,错误描述,错误出现的行数以及出现错误的函数。对于和我一样的新手来说,这里特别要注意的是宏__LINE__前后的那个横线是两个连续的下划线,而不是_LINE_,否则会出现错误。
源代码如下:
说明:本程序只作测试用,为了同时显示三种错误捕获函数的信息,因此屏蔽了每个函数的exit(1)。另外本文头文件函数用“”是因为显示问题,没有什么特别意义。
#include "errno.h"
#include "fcntl.h"
#include "unistd.h"
#include "stdlib.h"
#include "stdio.h
#include "sys/types.h"
#include "sys/stat.h"
#include "string.h"
void my_err(int error)
{
printf("error: %s with errno: %d\n",strerror(error),error);
// exit(1);
}
void my_err2(const char* err_string,int line)
{
fprintf(stderr,"error: line:%d ",line);
perror(err_string);
// exit(1);
}
void my_err3(const char* err_string,int line,int error)
{
printf("error: line:%d %s():%s with errno:%d\n",line,err_string,strerror(error),error);
// exit(1);
}
int main()
{
int fd;
if((fd=open("example_test.c",O_CREAT|O_EXCL,S_IRUSR|S_IWUSR))==-1)
{
my_err(errno);
my_err2("open",__LINE__);
my_err3("open",__LINE__,errno);
}
close(fd);
return 0;
}