【问题标题】:Redirect perror output to fprintf(stderr, " ")将 perror 输出重定向到 fprintf(stderr, " ")
【发布时间】:2011-07-25 21:12:00
【问题描述】:

如果系统调用函数失败,我们通常使用 perror 来输出错误信息。我想使用 fprintf 来输出 perror 字符串。我该怎么做这样的事情:

fprintf(stderr, perror output string here);

【问题讨论】:

    标签: c stderr errno


    【解决方案1】:
    #include <errno.h>
    
    fprintf(stderr, "%s\n", strerror(errno));
    

    注意:strerror 不会将\n 应用到消息的末尾

    【讨论】:

    • 谢谢特立独行。但是输出将与 perror 字符串完全相同?
    • 所以我正在做这样的事情:fprintf(stderr, "LeakTracer: timer_settime failed to set timer (timer_trackStartTime): %s \n",strerror(errno);
    • 不完全一样。使用 perror 时,您通常会写:perror("fopen")。这导致"fopen: &lt;error description&gt;"。如果是fprintf(stderr, "%s\n", strerror(errno)),您应该给出:&lt;error_description&gt;,所以如果您需要完全相同,请使用:fprintf(stderr, "fopen: %s\n", strerror(errno))。当然你应该用你的函数名替换fopen
    • 非常感谢,对我很有帮助。
    猜你喜欢
    • 2021-02-04
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 2010-09-27
    • 2019-06-14
    • 2010-09-05
    相关资源
    最近更新 更多