zoukankan      html  css  js  c++  java
  • perror strerror使用方法

     1. 简介

    很多系统函数在错误返回时将错误原因记录在libc定义的全局变量errno中,每种错误原因对应一个错误码。

    errno在头文件errno.h中声明,是一个整型变量,所有错误码都是正整数。然后我们可以用perror

    strerror函数将errno解释成字符串

    perror

    #include <stdio.h>

    void perror(const char *s);

    基于errno的当前值,在标准出错上产生一条出错信息,然后返回。它首先输出由msg指向的字符串,然后是一个冒号,一个空格,接着是对应于errno值的出错信息,最后是一个换行符。
    strerror
    #include <string.h>

    char *strerror(int errnum);

    将errnum(它通常就说errno值)映射为一个出错信息字符串,并返回此字符串的指针。

    perror是将errno对应的错误消息的字符串打印到标准错误输出上,即stderr或2上,若你的程序将标准错误输出重定向到/dev/null,那就看不到了,就不能用perror了。而 strerror的作用只是

    将errno对应的错误消息字符串返回,要怎样处理完全由你自己决定。通常我们选择把错误消息保存到日志文件中,即写文件,所以通常可以用fprintf(fp, "%s", strerror(errno))将错误消息打印

    到fp指向的文件中。其中perror中errno对应的错误消息集合跟strerror是一样的,也就是说不会漏掉某些错误。

    #include <stdio.h>
    #include <unistd.h>
    #include <errno.h>
    #include <string.h>
    
    int main()
    {
            int fd = 111111;
            int ret = 0;
            if((ret = close(fd)) == -1)
            {
                    perror("close error");
                    fprintf(stderr,"close error msg is :%s
    ",strerror(errno));
                    printf("close error msg is :%s
    ",strerror(errno));
            }
            return 0;
    }

    参考:http://www.cnblogs.com/zjfdbz/archive/2012/12/16/2821061.html

  • 相关阅读:
    dubbo springcloud区别
    rpc
    centos7 安装docker
    vibox安装
    知识点
    spring cloud
    微服务设计原则
    工具类
    xss--知识点
    java基础--注解
  • 原文地址:https://www.cnblogs.com/Malphite/p/7821305.html
Copyright © 2011-2022 走看看