Linux下C编程错误捕获函数(3)

测试结果如下:

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;
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwspgg.html