Comment puis-je masquer la sortie de curl_easy_perform (dans un shell)?
Ceci concerne une application en C.
Réponses
Trop de publicités?Utilisez CURLOPT_NOBODY dans curl_easy_setopt(). Exemple:
...
CURL *curl;
CURLcode statusCode;
curl = curl_easy_init();
if(curl){
curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com/");
//CURLOPT_NOBODY fait l'affaire
curl_easy_setopt(curl, CURLOPT_NOBODY, 1);
curl_easy_perform(curl);
...
Lien vers la documentation: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTNOBODY
Définissez les options CURLOPT_WRITEFUNCTION
et/ou CURLOPT_WRITEDATA
:
FILE *f = fopen("target.txt", "wb");
curl_easy_setopt(handle, CURLOPT_WRITEDATA, f);
Par défaut, libcurl écrit la sortie sur stdout
. Lorsque vous remplacez cela (ce que presque toutes les applications feront), il écrira dans un autre fichier ou transmettra des morceaux de sortie à une fonction de rappel. Consultez la documentation pour CURLOPT_WRITEFUNCTION
pour plus de détails.
Comme Joey l'a dit, CURLOPT_WRITEFUNCTION
vous permettra d'ignorer complètement toute sortie. Il suffit de configurer un rappel qui ne fait absolument rien si vous voulez que les données disparaissent simplement, sans être écrites sur aucun descripteur de fichier.
Par exemple,
/* Ne fait jamais rien, juste retourne la taille présentée */
size_t my_dummy_write(char *ptr, size_t size, size_t nmemb, void *userdata)
{
return size * nmemb;
}
Ensuite, dans vos options :
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, &my_dummy_write);
Ou, pointez le descripteur de fichier vers un périphérique NULL (beaucoup plus facile).