1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/html4/loose.dtd">
4 <title>curl_easy_perform man page</title>
5 <meta name="generator" content="roffit">
6 <STYLE type="text/css">
32 background-color: #e0e0e0;
38 font-family: monospace;
48 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
49 <p class="level0">curl_easy_perform - perform a blocking file transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
50 <p class="level0"><span Class="bold">#include <curl/curl.h></span>
51 <p class="level0"><span Class="bold">CURLcode curl_easy_perform(CURL * easy_handle );</span>
52 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
53 <p class="level0">Invoke this function after <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> and all the <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> calls are made, and will perform the transfer as described in the options. It must be called with the same <span Class="bold">easy_handle</span> as input as the <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> call returned.
54 <p class="level0"><a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> performs the entire request in a blocking manner and returns when done, or if it failed. For non-blocking behavior, see <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>.
55 <p class="level0">You can do any amount of calls to <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> while using the same <span Class="bold">easy_handle</span>. If you intend to transfer more than one file, you are even encouraged to do so. libcurl will then attempt to re-use the same connection for the following transfers, thus making the operations faster, less CPU intense and using less network resources. Just note that you will have to use <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> between the invokes to set options for the following curl_easy_perform.
56 <p class="level0">You must never call this function simultaneously from two places using the same <span Class="bold">easy_handle</span>. Let the function return first before invoking it another time. If you want parallel transfers, you must use several curl easy_handles.
57 <p class="level0">While the <span Class="bold">easy_handle</span> is added to a multi handle, it cannot be used by <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
58 <p class="level0">CURLE_OK (0) means everything was ok, non-zero means an error occurred as <span Class="emphasis"><curl/curl.h></span> defines - see <a Class="emphasis" href="./libcurl-errors.html">libcurl-errors</a>. If the <span Class="bold">CURLOPT_ERRORBUFFER(3)</span> was set with <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> there will be a readable error message in the error buffer when non-zero is returned. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
59 <p class="level0"><pre>
60 <p class="level0">CURL *curl = curl_easy_init();
63 curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
64 res = curl_easy_perform(curl);
65 curl_easy_cleanup(curl);
69 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
70 <p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_add_handle.html">curl_multi_add_handle</a>, <a Class="manpage" href="./curl_multi_perform.html">curl_multi_perform</a>, <span Class="manpage"> </span> <a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <span Class="manpage"> </span>
71 <p class="level0"><p class="roffit">
72 This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.