检查stderr是否为空

时间:2012-03-09 13:09:20

标签: c stderr

我将字符串写入stderr fprintf(strderr,格式strimg,字符串) 然后从其他函数我需要检查是否有任何内容写入stderr。

就此而言,只检查stderr是否为空可以吗?或者也许ferror(stderr)可以做到这一点?

3 个答案:

答案 0 :(得分:1)

可能最好使用布尔标志来跟踪是否已经给出错误 - 将其初始化为false并在任何时候写入stderr时将其设置为true。然后检查......

答案 1 :(得分:0)

查看this

在评论中,也有关于EOF的内容。可能正是你想要的?

答案 2 :(得分:0)

如果有机会,请

#include <stdio.h>
#include <stdarg.h>
char errprintf_called = 0;
int errprintf(const char * fmt, ...)
{
    errprintf_called = 1;
    va_list ap;
    va_start(ap, fmt);
    int ret = vfprintf(stderr, ap);
    va_end(ap);
    return ret;
}

并使用

errprintf("Error %d has occured!", 42);
if (errprintf_called) {
    whine();
} else {
    laugh();
}