名称:​​curl_global_init​​

原型


#include <curl/curl.h>
CURLcode curl_global_init(long flags);


描述


这个函数设置libcurl需要的程序运行环境,可以把它看作一个的加载器扩展

在进程环境(所有代码共享内存地址空间的程序)下,libcurl其他所有函数被调用之前这函数至少需要被调用一次。在进程的生命周期内,这个环境设置是没有变化的,所以在同一个程序中,多次调用和只调用一次没有区别。

这个flags选项精确的告诉libcurl那些特性需要被初始化,这些特性可以按位异或,一般情况下都是使用 CURL_GLOBAL_ALL这个标志。除非你非常了解这个哭的内部原理,否则不建议使用其他参数。

这个函数不是线程安全的。千万不要在进程中的其他线程里面去调用。这并不是说使用libcurl不能使用多线程。curl_global_init()不是线程安全的,主要是因为它调用了其他函数库中的函数,而这些函数可能不是线程安全的,一般情况都是在进程刚开始的时候,没有创建其他线程之前调用curl_global_init()。


FLAGS


CURL_GLOBAL_ALL
CURL_GLOBAL_SSL
CURL_GLOBAL_WIN32
CURL_GLOBAL_NOTHING
CURL_GLOBAL_DEFAULT
CURL_GLOBAL_ACK_EINTR


返回值


当发生错误时会返回非0值,如果返回非0值,代表初始化失败了,不要使libcurl的其他功能



名称: ​​curl_global_cleanup​​

原型


#include <curl/curl.h>
void curl_global_cleanup(void);


描述


这个函数释放 curl_global_init()已经获得的所有资源。同样这个函数也不是线程安全的。


警告


curl_global_cleanup不阻塞的等待任何被libcurl创建的线程终止(例如name resolving线程)。如果一个包含libcurl被动态的卸载,但是libcurl创建的线程仍然运行,这可能引起程序的崩溃。一般在整个程序(进程)结束之前调用这个函数释放资源,就不会有问题。