当linux中的C api函数发生异常时,一般会将errno变量(需include
errno.h)赋一个整数值,不同的值表示不同的含
义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是errno是一个数字,代表的具体含义还要到
errno.h中去阅读宏定义,而每次查阅是一件很繁琐的事情。有下面几种方法可以方便的得到错误信息
(1)void perror(const char *s)
函数说明
perror ( )用来将上一个函数发生错误的原因输出到标准错误(stderr),参数s
所指的字符串会先打印出,后面再加上错误原因 字符串。此错误原因依照全局变量
errno 的值来决定要输出的字符串。
1 #include
2 #include
3 #include
4 int main()
5 {
6 FILE *fp;
7 fp =fopen("file","r");
8 if(fp == NULL){
9 perror("error in open:");
10 exit(0);
11 }
12 return 0;
13 }
zhangbo@zhangbo-desktop:~/unixpr$ ./a.out
error in open:: No such file or directory
zhangbo@zhangbo-desktop:~/unixpr$
(2) char *strerror(int errno)
将错误代码转换为字符串错误信息,可以将该字符串和其它的信息组合输出到用户界面例如
fprintf(stderr,"error in CreateProcess %s, Process ID %d
",strerror(errno),processID)
注:假设processID是一个已经获取了的整形ID
阅读(1256) | 评论(0) | 转发(1) |