| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- .\" generated by cd2nroff 0.1 from curl_easy_perform.md
- .TH curl_easy_perform 3 "2025-01-17" libcurl
- .SH NAME
- curl_easy_perform \- perform a blocking network transfer
- .SH SYNOPSIS
- .nf
- #include <curl/curl.h>
- CURLcode curl_easy_perform(CURL *easy_handle);
- .fi
- .SH DESCRIPTION
- \fIcurl_easy_perform(3)\fP performs a network transfer in a blocking manner and
- returns when done, or earlier if it fails. For non\-blocking behavior, see
- \fIcurl_multi_perform(3)\fP.
- Invoke this function after \fIcurl_easy_init(3)\fP and all the \fIcurl_easy_setopt(3)\fP
- calls are made, and it performs the transfer as described in the options. It
- must be called with the same \fBeasy_handle\fP as input as the \fIcurl_easy_init(3)\fP
- call returned.
- You can do any amount of calls to \fIcurl_easy_perform(3)\fP while using the same
- \fBeasy_handle\fP. If you intend to transfer more than one file, you are even
- encouraged to do so. libcurl attempts to reuse existing connections for the
- following transfers, thus making the operations faster, less CPU intense and
- using less network resources. You probably want to use \fIcurl_easy_setopt(3)\fP
- between the invokes to set options for the following \fIcurl_easy_perform(3)\fP
- call.
- You must never call this function simultaneously from two places using the
- same \fBeasy_handle\fP. Let the function return first before invoking it another
- time. If you want parallel transfers, you must use several curl easy_handles.
- A network transfer moves data to a peer or from a peer. An application tells
- libcurl how to receive data by setting the \fICURLOPT_WRITEFUNCTION(3)\fP and
- \fICURLOPT_WRITEDATA(3)\fP options. To tell libcurl what data to send, there are a
- few more alternatives but two common ones are \fICURLOPT_READFUNCTION(3)\fP and
- \fICURLOPT_POSTFIELDS(3)\fP.
- While the \fBeasy_handle\fP is added to a multi handle, it cannot be used by
- \fIcurl_easy_perform(3)\fP.
- .SH PROTOCOLS
- This functionality affects all supported protocols
- .SH EXAMPLE
- .nf
- int main(void)
- {
- CURL *curl = curl_easy_init();
- if(curl) {
- CURLcode res;
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
- res = curl_easy_perform(curl);
- curl_easy_cleanup(curl);
- }
- }
- .fi
- .SH AVAILABILITY
- Added in curl 7.1
- .SH RETURN VALUE
- CURLE_OK (0) means everything was OK, non\-zero means an error occurred as
- \fI<curl/curl.h>\fP defines \- see \fIlibcurl\-errors(3)\fP. If \fICURLOPT_ERRORBUFFER(3)\fP
- was set with \fIcurl_easy_setopt(3)\fP there is an error message stored in the error
- buffer when non\-zero is returned.
- .SH SEE ALSO
- .BR curl_easy_init (3),
- .BR curl_easy_setopt (3),
- .BR curl_multi_add_handle (3),
- .BR curl_multi_perform (3),
- .BR libcurl-errors (3)
|