curl_global_init - 全局libcurl初始化

优采云 发布时间: 2020-08-12 16:54

  文章采集自互联网,仅做学习笔记使用curl_global_init - 全局libcurl初始化名称

  curl_global_init - 全局libcurl初始化

  概要

  #include

  CURLcode curl_global_init(长旗);

  描述

  此函数设置libcurl须要的程序环境。可以把它想像成库加载器的扩充。

  在程序调用libcurl中的任何其他函数之前,必须在程序中起码调用此函数一次(程序是共享显存空间的所有代码)。它设置的环境对于程序的生命周期是恒定的,并且对于每位程序都是相同的,因此多个调用与一个调用具有相同的疗效。

  flags选项是一个位模式,它告诉libcurl到init的准确功能,如下所述。通过将值进行“或”运算来设置所需的位。在正常操作中,您必须指定CURL_GLOBAL_ALL。除非您熟悉它而且意味着控制libcurl的内部操作,否则不要使用任何其他值。

  此功能不是线程安全的。当程序中的任何其他线程(即共享相同显存的线程)正在运行时,您不能调用它。这并不仅仅意味着没有其他使用libcurl的线程。因为curl_global_init调用类似线程不安全的其他库的函数,所以它可能与使用那些其他库的任何其他线程冲突。

  如果要从Windows DLL初始化libcurl,则不应从DllMain或静态初始化程序初始化它,因为Windows在此期间保存加载程序锁定而且可能造成死锁。

  有关怎样使用此函数的详尽信息,请参阅全局环境要求的libcurl中的说明。

  FLAGS

  CURL_GLOBAL_ALL

  尽可能初始化一切。这将设置除之外的所有已知位。

  CURL_GLOBAL_SSL

  (自7.57.0以来,此标志的存在与否无效。下面的描述适用于较旧的libcurl版本。)

  初始化SSL。

  这里的涵义是,如果未设置此位,则SSL层的初始化须要由应用程序完成,或者起码在libcurl之外完成。如何进行SSL初始化的准确过程取决于libcurl使用的TLS前端。

  在没有初始化TLS层的情况下执行基于TLS的传输可能会造成意外行为。

  CURL_GLOBAL_WIN32

  初始化Win32套接字库。

  这里的涵义是,如果未设置此位,则winsock的初始化必须由应用程序完成,否则您将面临未定义行为的风险。当在libcurl之外处理初始化时存在此选项,因此libcurl不需要再度执行此操作。

  CURL_GLOBAL_NOTHING

  没有多余的初始化。这没有任何意义。

  CURL_GLOBAL_DEFAULT

  一个明智的默认。它将初始化SSL和Win32。现在,这等于网段的功能。

  CURL_GLOBAL_ACK_EINTR

  设置此标志后,curl将在联接或等待数据时确认EINTR条件。否则,curl会等待直至完全超时。(在7.30.0中添加)

  返回值

  如果此函数返回非零,则出现错误,您难以使用其他curl函数。

  使用libcurl步骤1之curl_global_init

  使用libcurl步骤2之curl_easy_init

  使用libcurl步骤3之curl_easy_setopt

  使用libcurl步骤4之curl_easy_perform

  使用libcurl步骤5之curl_easy_cleanup

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线