2012-03-09 223 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(); 
}