笔记1-5: Unix C函数的的出错处理

Unix C函数的的出错处理:

 

Unix函数调用后出错,通常会返回一个负数值,也有可能返回NULL等,这需要根据具体函数而定。

         Unix函数出错后,都会把出错的原因保存在一个叫errno的变量里面,头文件<errno.h>中声明了errno变量,以及各种以E开头的出错常量值定义。

         errno也有可能扩展成一个可以修改的整数类型左值。

         例如:

         extern int errno;

         或者:

    extern  int *  __errno_location(void);

    #define  errno  (*__errno_location())

 

         对于errno的使用,必须知道两条规则:

(1)     如果函数没有出错,errno的值不会被清除。只有当函数返回值指明函数出错了,才去检查errno的值。

(2)     任何一个函数都不会把errno的值置为0

 

C标准中定义了两个函数,用来帮助打印出错信息。

#include <string.h>

char * strerror(int  errnum);

此函数将errnum(通常为errno)映射为一个出错信息字符串。

 

    #include <stdio>

    void perror(const char * msg);

         此函数先输出msg字符串,然后输出个冒号,接着输出errno对应的出错信息。

 

实例:

 

#include <apue.h>

#include <errno.h>

int main(int argc, char ** argv)

{

      fprintf(stderr, "EACCES: %s\n", strerror(EACCES));

      errno = ENOENT;

      perror(argv[0]);

      return 0;

}

 

 

 

 

posted on 2013-05-22 15:35  gradliang  阅读(117)  评论(0编辑  收藏  举报

导航