2012-03-09 225 views
1

我向stderr写入字符串 fprintf(strderr,格式strimg,字符串) 及其后的函数我需要检查是否有任何内容写入stderr。检查stderr是否为空

对于这个问题,检查stderr是否为空可以吗?或者也许恐怖(stderr)会诀窍?

+1

据我所知,你如果标准错误以任何可移植的方式被写入不能检查。难道你不能只是将输出分解为一个单独的函数,并设置一个布尔值,如果它曾经被调用过? – 2012-03-09 13:14:13

回答

1

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

0

在评论一起来看看this

,还有一些关于EOF了。可能正是你在找什么?

+1

这对输入文件很好,对输出不太有用。 – JeremyP 2012-03-09 14:14:24

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(); 
}