Używam libcurl do wysłania polecenia API do usługi lokalnej (tj. Na 127.0.0.1).libcurl opóźnienia na 1 sekundę przed przesłaniem danych, curl wiersza polecenia nie jest
Program ma na celu zastąpienie skrypt (który używa programu curl
).
Wszystko działa, chyba że występuje opóźnienie 1 sekundy gdzieś, czyli 1 sekunda upłynie od chwili wzywam curl_easy_perform()
do kiedy pierwsza funkcja wywołania zwrotnego jest wywoływana.
C korzysta z tych opcji (sprawdzanie błędów & kod oddzwonienia pominięta):
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);
Ale jeśli uruchomię curl
z powłoki jak ten:
$ curl --data-binary '<command>' http://127.0.0.1:12345/x
natychmiast wysyła żądanie , bez cierpienia z 1-sekundowym opóźnieniem.
Co może być przyczyną opóźnienia i czy istnieje opcja, którą można ustawić, aby temu zapobiec?
Edit Serwer oparty jest na mongoose
Próbowałaś wykonujący swój binarnych z _strace_? może pokazać jakiekolwiek opóźnienie podczas wykonywania programu. Strona man strace ma wiele opcji związanych z czasem. – VoidPointer
@VoidPointer, strace nie wyjawił nic istotnego, ale znalazłem przyczynę. Zobacz moją odpowiedź. – finnw