簡體   English   中英

在多個可執行文件上的libcurl和curl_global_init()

[英]libcurl and curl_global_init() on multiple executable files

我必須實現一個bash腳本,該腳本使用libcurl到Web服務器的循環中執行2個請求。

該腳本具有以下結構:

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();

}

libcurl文檔中,我讀到:

該程序必須全局初始化某些libcurl功能。 這意味着無論您打算使用該庫多少次,都應該只執行一次。 在您的程序的整個生命周期中一次。 這是使用curl_global_init()完成的

對我來說,尚不清楚“程序的整個生命周期”是否意味着如果我在2個單獨的可執行程序中使用libcurl,則無論如何我都必須聲明一次,例如在一個單獨的文件中聲明為初始化程序。 或者,我必須同時在callA源代碼和callB中定義。

在你的情況馬蹄蓮callB是在一個進程中運行每兩個明顯不同的程序,從而完全相互獨立的。

它們每個都有一個“生命周期”,因此兩者都應調用curl_global_init()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM