libcurl和curl_global_init()在多个可执行文件上

时间:2017-02-14 14:26:47

标签: c compilation libcurl

我必须实现一个bash脚本,它在一个带有libcurl的循环中执行2个请求到webserver。

脚本具有以下结构:

while :
do
  ./callA
  sleep(50)
  ./callB
  sleep(10)
done

callA和callB的二进制代码具有以下结构:

#include <curl/curl.h>

int main(int argc, char *argv[]){

    ...

    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(various settings...);
        res = curl_easy_perform(curl);
        if(res != CURLE_OK) {
            //do something...
        }
        else {
            //handle error...
       }
    }

    curl_easy_cleanup(curl);
    curl_global_cleanup();

}

来自image我读过:

  

程序必须全局初始化一些libcurl功能。这意味着无论您打算使用多少次库,都应该完成一次。一次为您的计划的整个生命时间。这是使用 curl_global_init()

完成的

对于我来说,“程序的整个生命周期”是否意味着如果我在2个单独的可执行程序中使用libcurl,我无论如何都要声明一次,例如在一个单独的文件中作为初始化程序。或者,我必须在callA源代码和callB中定义。

1 个答案:

答案 0 :(得分:0)

在您的情况下, callA callB 是两个截然不同的程序,每个程序在一个进程中运行,因此彼此完全独立。

他们各自有一个“生命时间”,因此他们都应该致电curl_global_init()