Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
curl_easy_perform(3)	   Library Functions Manual	  curl_easy_perform(3)

NAME
       curl_easy_perform - perform a blocking network transfer

SYNOPSIS
       #include	<curl/curl.h>

       CURLcode	curl_easy_perform(CURL *easy_handle);

DESCRIPTION
       curl_easy_perform(3)  performs  a network transfer in a blocking	manner
       and returns when	done, or earlier if it fails. For non-blocking	behav-
       ior, see	curl_multi_perform(3).

       Invoke  this function after curl_easy_init(3) and all the curl_easy_se-
       topt(3) calls are made, and it performs the transfer  as	 described  in
       the  options.  It  must be called with the same easy_handle as input as
       the curl_easy_init(3) call returned.

       You can do any amount of	calls to curl_easy_perform(3) while using  the
       same easy_handle. If you	intend to transfer more	than one file, you are
       even  encouraged	 to  do	so. libcurl attempts to	reuse existing connec-
       tions for the following transfers, thus making the  operations  faster,
       less CPU	intense	and using less network resources. You probably want to
       use curl_easy_setopt(3) between the invokes to set options for the fol-
       lowing curl_easy_perform(3) call.

       You  must never call this function simultaneously from two places using
       the same	easy_handle. 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  CURLOPT_WRITEFUNC-
       TION(3)	and CURLOPT_WRITEDATA(3) options. To tell libcurl what data to
       send, there are a few more alternatives but two common  ones  are  CUR-
       LOPT_READFUNCTION(3) and	CURLOPT_POSTFIELDS(3).

       While  the easy_handle is added to a multi handle, it cannot be used by
       curl_easy_perform(3).

PROTOCOLS
       This functionality affects all supported	protocols

EXAMPLE
       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);
	 }
       }

AVAILABILITY
       Added in	curl 7.1

RETURN VALUE
       This function returns a CURLcode	indicating success or error.

       CURLE_OK	(0) means everything was OK, non-zero means an error occurred,
       see  libcurl-errors(3).	If   CURLOPT_ERRORBUFFER(3)   was   set	  with
       curl_easy_setopt(3)  there  can be an error message stored in the error
       buffer when non-zero is returned.

SEE ALSO
       curl_easy_init(3),    curl_easy_setopt(3),    curl_multi_add_handle(3),
       curl_multi_perform(3), libcurl-errors(3)

libcurl				  2025-06-03		  curl_easy_perform(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=curl_easy_perform&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help