Sto utilizzando libcurl per inviare un comando API a un servizio locale (ad esempio su 127.0.0.1).ritardi di libcurl per 1 secondo prima del caricamento dei dati, l'arricciatura della riga di comando non è
Il programma è destinato a sostituire uno script di shell (che utilizza il programma curl
.)
Tutto sta funzionando, tranne che c'è un 1 secondo di ritardo da qualche parte, cioè 1 secondo trascorre dal momento che chiamo curl_easy_perform()
a quando viene chiamata la mia funzione di richiamata di lettura.
La C sta utilizzando queste opzioni (il controllo degli errori & codice di callback omesso):
curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:12345/x");
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
curl_easy_setopt(curl, CURLOPT_INFILESIZE, (long)getLengthOfCommandObject());
curl_easy_setopt(curl, CURLOPT_READFUNCTION, &myReadFunction);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &myWriteFunction);
Ma se corro curl
dalla shell in questo modo:
$ curl --data-binary '<command>' http://127.0.0.1:12345/x
invia immediatamente la richiesta , senza subire il ritardo di 1 secondo.
Che cosa potrebbe causare il ritardo e c'è un'opzione che posso impostare per impedirlo?
Modifica Il server è basato su mongoose
hai provato eseguire il vostro binario con _strace_? potrebbe mostrare qualsiasi ritardo nell'esecuzione del programma. La pagina man di strace ha molte opzioni correlate al tempo. – VoidPointer
@VoidPointer, strace non ha rivelato nulla di rilevante, ma ho trovato la causa. Vedi la mia risposta. – finnw