如何隐藏curl_easy_perform输出(在shell中)?
这与C应用程序有关。
答案 0 :(得分:22)
在curl_easy_setopt()中使用CURLOPT_NOBODY。 例如:
...
CURL *curl;
CURLcode statusCode;
curl = curl_easy_init();
if(curl){
curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com/");
//CURLOPT_NOBODY does the trick
curl_easy_setopt(curl, CURLOPT_NOBODY, 1);
curl_easy_perform(curl);
...
链接到文档:http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTNOBODY
答案 1 :(得分:11)
设置CURLOPT_WRITEFUNCTION
和/或CURLOPT_WRITEDATA
选项:
FILE *f = fopen("target.txt", "wb");
curl_easy_setopt(handle, CURLOPT_WRITEDATA, f);
默认情况下,libcurl将输出写入stdout
。当你覆盖它(这几乎是任何应用程序将要执行的操作)时,它将写入另一个文件或将输出块传递给回调。有关详细信息,请参阅CURLOPT_WRITEFUNCTION
的文档。
答案 2 :(得分:6)
作为Joey said,CURLOPT_WRITEFUNCTION
将允许您完全忽略所有输出。如果你想让数据消失,只需设置一个绝对没有任何回调的回调,而不是写入任何文件描述符。
例如,
/* Never writes anything, just returns the size presented */
size_t my_dummy_write(char *ptr, size_t size, size_t nmemb, void *userdata)
{
return size * nmemb;
}
然后在您的选项中:
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, &my_dummy_write);
或者,将文件句柄指向NULL设备(更容易)。