xref: /curl/docs/libcurl/curl_multi_init.md (revision e3fe0200)
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
15---
16
17# NAME
18
19curl_multi_init - create a multi handle
20
21# SYNOPSIS
22
23~~~c
24#include <curl/curl.h>
25
26CURLM *curl_multi_init();
27~~~
28
29# DESCRIPTION
30
31This function returns a pointer to a *CURLM* handle to be used as input to
32all the other multi-functions, sometimes referred to as a multi handle in some
33places in the documentation. This init call MUST have a corresponding call to
34curl_multi_cleanup(3) when the operation is complete.
35
36# EXAMPLE
37
38~~~c
39int main(void)
40{
41  /* init a multi stack */
42  CURLM *multi = curl_multi_init();
43  CURL *curl = curl_easy_init();
44  CURL *curl2 = curl_easy_init();
45
46  /* add individual transfers */
47  curl_multi_add_handle(multi, curl);
48  curl_multi_add_handle(multi, curl2);
49}
50~~~
51
52# AVAILABILITY
53
54Added in 7.9.6
55
56# RETURN VALUE
57
58If this function returns NULL, something went wrong and you cannot use the
59other curl functions.
60