2017-02-14 3 views
0

Мне нужно реализовать скрипт bash, который выполняет 2 запроса в цикле с libcurl на веб-сервере.libcurl и curl_global_init() для нескольких исполняемых файлов

Сценарий имеет такую ​​структуру:

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

двоичный код Калла и 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 documentation Я читаю:

Программа должна инициализировать некоторые из функций libcurl глобально. Это означает, что это нужно делать ровно один раз, независимо от того, сколько раз вы собираетесь использовать библиотеку. Однажды на всю жизнь вашей программы. Это делается с помощью curl_global_init()

Это не ясно, для меня, если «все время жизни программы» означает, что, если я использую Libcurl в 2 отдельных исполняемых программ, которые я так или иначе объявить один раз, например, в отдельном файле, который фигурирует как инициализатор. Или, вместо этого, я должен определить как в исходном коде callA, так и в callB.

ответ

0

В вашем случае Калла и callB два совершенно отдельных программ, работающих в одном процессе каждого и, таким образом, совершенно независимо друг от друга.

У них есть один «срок службы» каждый, и поэтому оба должны звонить curl_global_init().