Пример того, как отменить запрос libCurl - PullRequest
5 голосов
/ 07 декабря 2011

Я спрашиваю, как я могу отменить запрос скручивания:

res = curl_easy_perform(curl);

Ответы [ 4 ]

9 голосов
/ 07 декабря 2011

Использовать CURLOPT_PROGRESSFUNCTION обратный вызов и возвращать ненулевое значение для отмены, когда вы решите.Может быть, вы могли бы использовать некоторые другие более подходящие обратные вызовы в зависимости от ваших требований.

2 голосов
/ 07 декабря 2011

Вы не можете легко прервать работающую функцию изнутри C;вам нужно будет использовать сигналы.Нажатие Ctrl + C в вашей программе должно завершить вызов cURL, но также убивает ваш процесс по умолчанию.Чтобы отправить сигнал программно, вам понадобятся отдельные потоки или процесс.

В зависимости от того, какую проблему вы пытаетесь решить, вы можете установить CURLOPT_TIMEOUTс curl_easy_setopt.

1 голос
/ 27 сентября 2016

У вас также есть возможность использовать curl_multi_remove_handle. Как указано в официальной документации керл:

«Снятие удобной рукоятки во время ее использования является совершенно законным и эффективно остановит процесс передачи с использованием этой удобной рукоятки. Все остальные удобные рукоятки и переносы останутся без изменений».

c.f. https://curl.haxx.se/libcurl/c/curl_multi_remove_handle.html

0 голосов
/ 07 сентября 2018

curl_easy_cleanup ваш друг здесь, я думаю.

...