2014-03-13 22 views
5

如何防止/刪除/停止打印/輸出到libcurl中的命令行?出於某種原因,下面的代碼工作的網址,但是當我擊中的圖像的頁面,像http://192.168.123.123/banana.gif,那麼它崩潰:的libcurl - 如何停止輸出到命令行中的C++

CURL *session; 
session = curl_easy_init(); 
curl_easy_setopt(session, CURLOPT_URL, "http://192.168.123.123/banana.gif"); 

CURLcode curl_code = curl_easy_perform (session); 
long http_code = 0; 
curl_easy_getinfo(session, CURLINFO_RESPONSE_CODE, &http_code); 

回答

9

這是因爲你沒有設置CURLOPT_WRITEDATA選項:

內部CURLOPT_WRITEFUNCTION會將數據寫入使用此選項給出的FILE *或以輸出標準輸出,如果此選項尚未設置

如果你決定完全忽略響應數據,你可以做的是把它寫入/dev/null

/* ... */ 

FILE *devnull = fopen("/dev/null", "w+"); 
curl_easy_setopt(session, CURLOPT_WRITEDATA, devnull); 
CURLcode curl_code = curl_easy_perform(session); 
fclose(devnull); 

/* ... */ 

另一種方法是使用NOOP write function

curl_easy_setopt(session, CURLOPT_WRITEFUNCTION, noop_cb); 

凡寫函數返回接收的字節數:

size_t noop_cb(void *ptr, size_t size, size_t nmemb, void *data) { 
    return size * nmemb; 
} 
+0

非常感謝你!!!! – codeshark