2024-03-16 02:55:33 +00:00
|
|
|
.\" generated by cd2nroff 0.1 from curl_easy_perform.md
|
2024-06-01 20:49:19 +00:00
|
|
|
.TH curl_easy_perform 3 "2024-06-01" libcurl
|
2024-03-16 02:55:33 +00:00
|
|
|
.SH NAME
|
|
|
|
curl_easy_perform \- perform a blocking file 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.
|
2024-03-30 18:28:04 +00:00
|
|
|
.SH PROTOCOLS
|
|
|
|
All
|
2024-03-16 02:55:33 +00:00
|
|
|
.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
|
|
|
|
Always
|
|
|
|
.SH RETURN VALUE
|
|
|
|
CURLE_OK (0) means everything was OK, non\-zero means an error occurred as
|
2024-03-30 18:28:04 +00:00
|
|
|
\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.
|
2024-03-16 02:55:33 +00:00
|
|
|
.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)
|