1curl_easy_perform(3)            libcurl Manual            curl_easy_perform(3)
2
3
4

NAME

6       curl_easy_perform - perform a blocking file transfer
7

SYNOPSIS

9       #include <curl/curl.h>
10
11       CURLcode curl_easy_perform(CURL *easy_handle);
12

DESCRIPTION

14       Invoke  this function after curl_easy_init(3) and all the curl_easy_se‐
15       topt(3) calls are made, and it performs the transfer  as  described  in
16       the  options.  It  must be called with the same easy_handle as input as
17       the curl_easy_init(3) call returned.
18
19       curl_easy_perform(3) performs the entire request in a  blocking  manner
20       and  returns when done, or earlier if it fails. For non-blocking behav‐
21       ior, see curl_multi_perform(3).
22
23       You can do any amount of calls to curl_easy_perform(3) while using  the
24       same easy_handle. If you intend to transfer more than one file, you are
25       even encouraged to do so. libcurl will then attempt to re-use the  same
26       connection  for  the  following  transfers,  thus making the operations
27       faster, less CPU intense and using less network  resources.  Just  note
28       that  you  will  have to use curl_easy_setopt(3) between the invokes to
29       set options for the following curl_easy_perform.
30
31       You must never call this function simultaneously from two places  using
32       the  same easy_handle. Let the function return first before invoking it
33       another time. If you want parallel transfers, you must use several curl
34       easy_handles.
35
36       A  network transfer moves data to a peer or from a peer. An application
37       tells libcurl how to receive data  by  setting  the  CURLOPT_WRITEFUNC‐
38       TION(3)  and CURLOPT_WRITEDATA(3) options. To tell libcurl what data to
39       send, there are a few more alternatives but two common  ones  are  CUR‐
40       LOPT_READFUNCTION(3) and CURLOPT_POSTFIELDS(3).
41
42       While  the easy_handle is added to a multi handle, it cannot be used by
43       curl_easy_perform(3).
44

EXAMPLE

46       CURL *curl = curl_easy_init();
47       if(curl) {
48         CURLcode res;
49         curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
50         res = curl_easy_perform(curl);
51         curl_easy_cleanup(curl);
52       }
53

AVAILABILITY

55       Always
56

RETURN VALUE

58       CURLE_OK (0) means everything was ok, non-zero means an error  occurred
59       as <curl/curl.h> defines - see libcurl-errors(3). If the CURLOPT_ERROR‐
60       BUFFER(3) was set with curl_easy_setopt(3) there will be a readable er‐
61       ror message in the error buffer when non-zero is returned.
62

SEE ALSO

64       curl_easy_init(3),    curl_easy_setopt(3),    curl_multi_add_handle(3),
65       curl_multi_perform(3), libcurl-errors(3),
66
67
68
69libcurl 7.85.0                   May 17, 2022             curl_easy_perform(3)
Impressum