正如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
。是吗?
答案 0 :(得分:1)
curl_global_init
将被召唤一次。请记住,fork在调用时都会创建进程的副本,因此它也会复制curl的状态。因此,如果初始化已经在fork之前完成,则不需要再次在子节点中调用curl_global_init
。
答案 1 :(得分:-1)
但子进程和父进程有不同的内存空间。如果在子进程中调用curl_global_init
,我认为没问题答案 2 :(得分:-2)
是的,无需致电curl_global_init()