读书人

Linux C编程-过程介绍4-errno

发布时间: 2013-03-06 16:20:31 作者: rapoo

Linux C编程--进程介绍4--errno

当linux中的C api函数发生异常时,一般会将errno变量(需includeerrno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是errno是一个数字,代表的具体含义还要到errno.h中去阅读宏定义,而每次查阅是一件很繁琐的事情。有下面几种方法可以方便的得到错误信息

(1)void perror(const char *s)
函数说明
perror ( )用来将上一个函数发生错误的原因输出到标准错误(stderr),参数s所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量 errno的值来决定要输出的字符串。

(2) char *strerror(int errno)
将错误代码转换为字符串错误信息,可以将该字符串和其它的信息组合输出到用户界面例如
fprintf(stderr,"error in CreateProcess %s,Process ID %d ",strerror(errno),processID)
注:假设processID是一个已经获取了的整形ID

(3)printf("%m", errno);
另外不是所有的地方发生错误的时候都可以通过error获取错误代码


errno.h中定义的错误代码值如下:
linux2.4.20-18的内核代码中的/usr/include/asm/errno.h

同时也可以使用strerror()来自己翻译

下面给出两个例子:
例一:

dsp设备忙的话将输出如下:
errno=16
Mesg:Device or resource busy


例二:

#include <string.h>#include <errno.h>  /* for strerror */#include <stdio.h>int main(int argc, char ** argv){  int i = 0;  for(i = 0; i < 256; i++)  printf("errno.%02d is: %s/n", i, strerror(i));  return 0;}


读书人网 >编程

热点推荐