Chinaunix首页 | 论坛 | 博客
  • 博客访问: 64866
  • 博文数量: 31
  • 博客积分: 72
  • 博客等级: 民兵
  • 技术积分: 178
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-17 00:28
文章分类

全部博文(31)

文章存档

2013年(4)

2012年(12)

2011年(15)

我的朋友

分类:

2011-07-17 19:38:51

原文地址:linux 中errno的使用 作者:xylxz

当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
阅读(435) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~