使用curl的多进程,什么时候必须调用curl_global_init?

时间:2012-03-25 11:29:10

标签: c libcurl

正如http://curl.haxx.se/libcurl/c/curl_global_init.html所说,curl_global_init()是必要的,但此函数不是线程安全的。如下代码:

// main process
curl_global_init();   // 1 curl_global_init
pid = fork();
if (pid == 0) {
    // Child process
    curl_global_init();  // 2 curl_global_init
    // ... curl functions
} else {
    // parent process
    // ... curl functions 
}

子进程是否需要再次呼叫curl_global_init? 我认为子进程从父进程复制内存空间,您不需要再次调用curl_global_init。是吗?

3 个答案:

答案 0 :(得分:1)

curl_global_init将被召唤一次。请记住,fork在调用时都会创建进程的副本,因此它也会复制curl的状态。因此,如果初始化已经在fork之前完成,则不需要再次在子节点中调用curl_global_init

答案 1 :(得分:-1)

但子进程和父进程有不同的内存空间。如果在子进程中调用curl_global_init

,我认为没问题

答案 2 :(得分:-2)

是的,无需致电curl_global_init()