xref: /curl/docs/libcurl/curl_multi_init.md (revision 5a488251)
1---
2c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
3SPDX-License-Identifier: curl
4Title: curl_multi_init
5Section: 3
6Source: libcurl
7See-also:
8  - curl_easy_init (3)
9  - curl_global_init (3)
10  - curl_multi_add_handle (3)
11  - curl_multi_cleanup (3)
12  - curl_multi_get_handles (3)
13Protocol:
14  - All
15Added-in: 7.9.6
16---
17
18# NAME
19
20curl_multi_init - create a multi handle
21
22# SYNOPSIS
23
24~~~c
25#include <curl/curl.h>
26
27CURLM *curl_multi_init();
28~~~
29
30# DESCRIPTION
31
32This function returns a pointer to a *CURLM* handle to be used as input to
33all the other multi-functions, sometimes referred to as a multi handle in some
34places in the documentation. This init call MUST have a corresponding call to
35curl_multi_cleanup(3) when the operation is complete.
36
37# %PROTOCOLS%
38
39# EXAMPLE
40
41~~~c
42int main(void)
43{
44  /* init a multi stack */
45  CURLM *multi = curl_multi_init();
46  CURL *curl = curl_easy_init();
47  CURL *curl2 = curl_easy_init();
48
49  /* add individual transfers */
50  curl_multi_add_handle(multi, curl);
51  curl_multi_add_handle(multi, curl2);
52}
53~~~
54
55# %AVAILABILITY%
56
57# RETURN VALUE
58
59If this function returns NULL, something went wrong and you cannot use the
60other curl functions.
61