隐藏curl_easy_perform

时间:2010-05-11 22:52:02

标签: c libcurl

如何隐藏curl_easy_perform输出(在shell中)?
这与C应用程序有关。

3 个答案:

答案 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 saidCURLOPT_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设备(更容易)。