C 标准库 error.h

转载 2012年03月22日 11:17:10
对于编程序来讲,我们需要十分注意错误的返回,所以我想要谢谢我对于error.h的理解。
          对于早期的unix程序采用的“其他地方”,是一个具有外部链接的数据对象。任何失败的系统调用都从内核中存储一个叫做errno的整型变量作为错误编,它或者返回-1,或者返回其他适当的无意义的值来说明一个错误。但是,如果两个系统调用都发生了错误,但是还没来的及输出那么其中一个错误就有可能被覆盖掉。这是不安的。
        数学错误:
                       当一个结果在数值上太大而不能作为指定类型的浮点值表示的时候就会发生向上溢出。
                       当一个结果在数值上太小而不能作为指定类型的浮点值表示的时候就会发生向下溢出。
                       但一个结果没有位置容纳它的类型指示的有效位的时候就会发生有效值丢失。
                       当接受一个指定的参数值而产生的结果没有被定义的时候就会发生域错误。
       其中 : 域错误报告EDOM
                    溢出错误报告ERANGE
        在errno.h中
                      #ifndef   _ERRNO
                      #define _ERRNO
                       extern int errno;
                      #define  EDOM  1
                      #define  ERANGE 2
                         .................
                      #endif
输出错误函数:
1>perror() 用 来 将 上 一 个 函 数 发 生 错 误 的 原 因 输 出 到 标 准 设备 (stderr) 。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量error 的值来决定要输出的字符串。
  在库函数中有个error变量,每个error值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了error的值。perror函数只是将你输入的一些信息和现在的error所对应的错误一起输出。
2>stderr() 【unix】标准输出(设备)文件,对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
在C中,程序执行时,一直处于开启状态。   与其有关的 stdin、stdout……   可能的使用方法有:fprintf(stderr,"error message");
默认输出到终端窗口,文件描述器代码为2。
3>strerror() 获取系统错误信息或打印用户程序错误信息。函数strerror返回一个错误消息字符串的指针,其内容是由实现定义的,字符串不能修、但可以在后续调用strerror函数时覆盖.

注意:
如果擅自修改errno的值,那么相应perror 、strerror 的值也会修改。
例子:
#include<stdio.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

int main()
{
    char* filename = "test";
    errno = 0;//在errno中已经定义。
    int fd;
   
    fd = open(filename,O_RDWR);
    
    if(fd <=0) {
        perror("open");
        printf("error:  %s\n",strerror(errno));
        fprintf(stderr,"line = %d\n",__LINE__);
    }

    errno = 1;
    if(fd<=0) {
        perror("open");
        printf("error:  %s\n",strerror(errno));
        fprintf(stderr,"line = %d\n",__LINE__);
    }

}
结果:
C <wbr>标准库 <wbr> <wbr>error.h


相关文章推荐

C /C++标准库 - <cerrno> (errno.h)

1. 概述errno中定义了几个宏,其和错误状态的报告有关2. Macroerrno:errno 是记录系统的最后一次错误代码,代码是一个int型的值。 注意:只有当一个库函数失败时,errno才会...

C /C++标准库 - <cstdlib>(stdlib.h)

stdlib.hstandard library标准库头文件,是一个大杂烩,定义和声明一些没有明显的归属的宏和函数。1. Types 序号 Types 描述 1 div_t St...

C标准库参考指南系列译文(2)ctype.h

英文原文:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.2.html 原文作者:Eric Huss 中文译者:柳惊鸿 Poechant 版权...

C标准库time.h使用说明

// 作者:Michael Lin // 时间:2014 - 5 -12 近期学习C++标准库时,我发现time.h(ctime)里一些函数经常导致自己困惑或者是误用,因此打算自己写一篇文章总结下...

C标准库学习之<errno.h> ——错误

include include include include /*time: 2017年1月25日14:37:54 objective: test C languag...

C标准库源码解剖(13):输入输出函数stdio.h

C标准中的I/O库是一个比较庞大的库,实现也比较复杂。显然I/O库的实现是依赖于操作系统的,不同的系统上I/O库的实现机理是不一样的。glibc中,I/O库的核心实现在libio目录下。有4个头文件l...

C /C++标准库 - <cstring> (string.h)

1. string.h 概述string.h支持C语言把文本作为字符数组操作的传统,其声明了一种类型和几个函数,并定义了一个宏。声明的类型是size_t,定义的宏是NULL。确定数组长度的方法有很多种...

【转】各种数据类型的取值范围 C/C++标准库中定义的各个类型最大值最小值limit.h

转载自:http://blog.csdn.net/fx677588/article/details/71429366 C/C++标准库中定义的各个类型最大值最小值limit.h           ...

C标准库学习之<ctype.h> ——字符处理

#include #include // 字符chu理函数/* ========================================================= time: ...

《C标准库》——之<stdarg.h>

C语言变长参数
  • JY_95
  • JY_95
  • 2015年05月10日 10:05
  • 630
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C 标准库 error.h
举报原因:
原因补充:

(最多只允许输入30个字)