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

  • 相关阅读:
    Longest Palindromic Substring
    PayPal MLSE job description
    Continuous Median
    Remove Duplicates From Linked List
    Valid IP Address
    Longest substring without duplication
    Largest range
    Subarray sort
    Multi String Search
    Suffix Trie Construction
  • 原文地址:https://www.cnblogs.com/Malphite/p/7821305.html
Copyright © 2011-2022 走看看