cURL / Mailing Lists / curl-library / Single Mail


libcurl: how to discard response data from an upload?

From: Apurva Mehta <>
Date: Tue, 17 Feb 2009 11:08:58 -0800


   I want to to use libcurl to upload a file using the HTTP PUT
method. I am interested in the response headers, but don't want to
deal with the response data. So I decided to redirect the response
data to /dev/null. Here are the curl options I am using to achieve
this behavior.

    CURL *chandle = curl_easy_init();

    string url = "some url";
    FILE *dev_null = fopen ("/dev/null" , "w+");

    if (dev_null == NULL) {
        perror ("Could not open /dev/null for writing");
        return -1;

    curl_easy_setopt (chandle, CURLOPT_URL, url.c_str());
    curl_easy_setopt (chandle , CURLOPT_NOPROGRESS , 1 ) ;

    curl_easy_setopt (chandle , CURLOPT_UPLOAD, 1L) ;
    curl_easy_setopt (chandle, CURLOPT_HEADERDATA, (void *)
shared_data );
    curl_easy_setopt (chandle, CURLOPT_HEADERFUNCTION,
    curl_easy_setopt (chandle, CURLOPT_WRITEDATA, dev_null);

    curl_easy_setopt (chandle, CURLOPT_READDATA, (void *) shared_data);
    curl_easy_setopt (chandle, CURLOPT_READFUNCTION, read_callback);
    curl_easy_setopt (chandle, CURLOPT_INFILESIZE_LARGE, shared_data-

* * *

   The upload works fine, and I can process the response headers as I
desire. However, the response data still gets written to stdout. Is
there something I am missing? What else can I do to prevent the
response data from being written to stdout?

Received on 2009-02-17