声明

  1. CURLcode curl_global_init(long flags);

概要

libcurl全局初始化。

详情

该函数建立起libcurl需要的程序环境。可以把它当做是库加载器的额外工作。

备注

  • 这里的意思是,可以在加载libcurl的时候顺便调用curl_global_init

该函数必须在程序(指代所有共享同一个内存空间的代码)调用其它任何libcurl函数之前至少调用一次。它所建立的环境在程序的生命周期中是不变的,所以多次调用的效果跟单次调用相同。

flags选项是一个位域,它确切地告诉libcurl初始化哪些特性(在下文介绍)。可以通过或操作把想要的位设置到一起。在一般的使用场景下,你必须设置CURL_GLOBAL_ALL。不要使用任何其它的值,除非你熟悉这些值并且想要去控制libcurl的内部行为。

该函数不是线程安全的。当程序中任何其它线程(例如一个共享了相同内存的线程)正在运行的时候,你不能调用它。这不仅仅意味着没有其它线程使用libcurl。因为curl_global_init调用的其它库的函数同样是非线程安全的,它可能与使用了这些库的其它线程冲突。

请参考《libcurl》中对全局环境需求的说明来获取如何使用该函数的详细信息。

标记

CURL_GLOBAL_ALL

尽可能初始化所有特性。这个标记设置除了CURL_GLOBAL_ACK_EINTR之外的所有位。

CURL_GLOBAL_SSL

初始化SSL。

CURL_GLOBAL_WIN32

初始化Win32的套接字库。

CURL_GLOBAL_NOTHING

不初始化任何额外的特性。这个标记不设置任何位。

CURL_GLOBAL_DEFAULT

一个合理的默认值。它会同时初始化SSL和Win32。现在,这个标记的作用等同于CURL_GLOBAL_ALL

CURL_GLOBAL_ACK_EINTR

当设置了这个标记,curl会在连接或者等待数据时应答EINTR状态。否则,curl会等待直到经过了完整的超时。(在7.30.0加入)

疑问

  • EINTR是什么?

返回值

如果该函数返回非0,说明发生了某些错误,你不能再使用其它curl函数。