Ich versuche, eine QT-Anwendung in C/C++ zu entwickeln, die libcurl verwendet. Einfach möchte ich VERBOSE Daten in eine Datei speichern. In Libcurl API Dokumentation, wird gesagt, dass (https://curl.haxx.se/libcurl/c/CURLOPT_VERBOSE.html)Ausführliche Informationen von libcurl zu einer Datei
Die ausführlichen Informationen werden Stderr gesendet werden, oder der Strom mit CURLOPT_STDERR eingestellt.
Also, VERBOSE Informationen werden bei stderr sein. Und nachdem ich den Link für CURLOPT_STDERR (https://curl.haxx.se/libcurl/c/CURLOPT_STDERR.html) gefolgt ist, die erzählt,
übergeben Sie eine FILE * als Parameter. Sagen Sie libcurl, diesen Stream anstelle von stderr zu verwenden, wenn Sie den Fortschrittszähler anzeigen und CURLOPT_VERBOSE-Daten anzeigen.
Bei der Verknüpfung CURLOPT_STDERR existiert ein Codebeispiel. Ich habe versucht, es auf meiner eigenen Anwendung wie:
CURL *curl = curl_easy_init();
FILE *filep = fopen("dump.txt", "wb");
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com");
curl_easy_setopt(curl, CURLOPT_STDERR, filep);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
curl_easy_perform(curl);
}
CURLcode res = curl_easy_perform(curl);
if (CURLE_OK != res) {
fprintf(stderr, "curl told us %d\n", res);
}
curl_easy_cleanup(curl);
fclose(filep);
jedoch ausführliche Informationen nicht auf der Kommandozeile angezeigt und die Datei, die für die ausführliche Information erstellt wird, ist leer. Wie kann ich dieses Problem lösen?
Ist die korrekte Ausgabe auf stderr auftauchen? (ie-console) –
@johnelemans ausführliche Informationen werden mit diesem Code nicht auf der Konsole angezeigt. – user3035291
Der Code sieht gut aus. Bestätigen Sie, dass die Ausgabe an stderr ohne die Umleitung erfolgt, und wenn nicht, debuggen Sie zuerst. –