libcURL-как остановить вывод в командную строку в c++
Как вы можете предотвратить / удалить/остановить печать / вывод в командной строке в libcurl? По какой-то причине следующий код работает для URL-адресов, но когда я нажимаю страницу с изображением, например http://192.168.123.123/banana.gif
, потом она падает:
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);
1 ответов
Это потому что ты не поставил CURLOPT_WRITEDATA
:
внутренняя функция CURLOPT_WRITEFUNCTION будет записывать данные в файл *, указанный с помощью этой опции, или в stdout, если этот параметр не был установлен.
что вы можете сделать, если вы решили полностью игнорировать данные ответа пишите на /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 пишите функция:
curl_easy_setopt(session, CURLOPT_WRITEFUNCTION, noop_cb);
где функция write просто возвращает количество полученных байтов:
size_t noop_cb(void *ptr, size_t size, size_t nmemb, void *data) {
return size * nmemb;
}