出错处理

转自:http://blog.chinaunix.net/uid-26874138-id-3192983.html

输出错误函数:
1>perror(const char *s) 用 来 将 上 一 个 函 数 发生 错 误 的 原 因 输 出 到 标 准 设备 (stderr) 。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量error 的值来决定要输出的字符串。
  在库函数中有个error变量,每个error值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了error的值。perror函数只是将你输入的一些信息和现在的error所对应的错误一起输出。
2>stderr unix 标准输出(设备)文件,对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
在C中,程序执行时,一直处于开启状态。   与其有关的 stdin、stdout……   可能的使用方法有:fprintf(stderr,"error message");
默认输出到终端窗口,文件描述器代码为2。
3>strerror(int errno) 获取系统错误信息或打印用户程序错误信息。函数strerror返回一个错误消息字符串的指针,其内容是由实现定义的,字符串不能修、但可以在后续调用strerror函数时覆盖.

注意:
如果擅自修改errno的值,那么相应perror 、strerror 的值也会修改

1.#include<stdio.h>

2.#include<errno.h>

3.#include<string.h>

4.#include<sys/types.h>

5.#include<sys/stat.h>

6.#include<fcntl.h>

7.

8.int main()

9.{

10.    char* filename = "test";

11.    errno = 0;//在errno中已经定义。

12.    int fd;

13.   

14.    fd = open(filename,O_RDWR);

15.    

16.    if(fd <=0) {

17.        perror("open");

18.        printf("error: %s\n",strerror(errno));

19.        fprintf(stderr,"line = %d\n",__LINE__);

20.    }

21.

22.    errno = 1;

23.    if(fd<=0) {

24.        perror("open");

25.        printf("error: %s\n",strerror(errno));

26.        fprintf(stderr,"line = %d\n",__LINE__);

27.    }

28.

29.}

结果:


http://wenku.baidu.com/view/37cf317d27284b73f24250e3.html

http://www.doc88.com/p-896906787034.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值