Curl 源码分析
分析下curl 的源码,免得c忘光了。
首先 curl 依赖于libcurl, 这里只分析curl命令,libcurl 分析以后会详述。
源码获取
curl网站,下载一份curl源码。
curl 源码结构
源码结构如下
先省略
curl源码分析
先从main 函数看起,废话不多说,上源码, 加注释
int main(int argc, char *argv[])
{
// 返回状态码,c语言习惯,执行成功通过返回码确定。
CURLcode result = CURLE_OK;
//全局配置,配置里面东西太多,不单列了,定义了先初始化。
struct GlobalConfig global;
memset(&global, 0, sizeof(global));
// 确保 std in out err 打开。
main_checkfds();
// 信号处理函数
#if defined(HAVE_SIGNAL) && defined(SIGPIPE)
(void)signal(SIGPIPE, SIG_IGN);
#endif
/* Initialize memory tracking */
memory_tracking_init();
/* Initialize the curl library - do not call any libcurl functions before
this point */
result = main_init(&global);
if(!result) {