apache的启动过程 原代码 分析.doc

apache的启动过程 原代码 分析.doc

ID:51569499

大小:112.50 KB

页数:14页

时间:2020-03-13

apache的启动过程 原代码 分析.doc_第1页
apache的启动过程 原代码 分析.doc_第2页
apache的启动过程 原代码 分析.doc_第3页
apache的启动过程 原代码 分析.doc_第4页
apache的启动过程 原代码 分析.doc_第5页
资源描述:

《apache的启动过程 原代码 分析.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1./server/log.c这个里面定义了ap_log_error()。2./include/httpd.h这个文件里面申明了基本的内容,如文件路径,字符串长度,等等。3./server/listen.c对于apache的httpd,有很多的技术,有MPM多任务并发处理(采用记分板),内存池,线程池。。。1.在main()有一个for(;;)里面调用了ap_mpm_run。但这个循环里好象只执行了一次,而不是一直在循环。2.在ap_mpm_run()里,有一个while(!restart_pending&&!shutdown_pending)。这个

2、循环每一秒就往返一次,一直执行,直到进程结束。如果是第一次启动,在这个循环里,会调用一个startup_children();在这里面又有一个循环调用make_child()产生初始数量的子进程。3.在上面的while里,perform_idle_server_maintenance(pconf)会每1秒执行一次,如果你kill-9一个子进程,这个函数就起作用,再重新调用make_child()生成一个子进程。4.如果执行httpd–kstop,那么ap_mpm_run()会返回错误,在main()就会跳出for(;;),进程退出。5.在make_c

3、hild()里,有一个fork()调用产生子进程,然后在子进程里调用child_main()进行子进程的初始化处理。linux-lncx:/home/apache/httpd-2.2.11/server#lsmain.cmain.clinux-lncx:/home/apache/httpd-2.2.11/server#intmain(intargc,constchar*constargv[]){charc;intconfigtestonly=0;constchar*confname=SERVER_CONFIG_FILE;constchar*def_s

4、erver_root=HTTPD_ROOT;constchar*temp_error_log=NULL;constchar*error;process_rec*process;server_rec*server_conf;apr_pool_t*pglobal;apr_pool_t*pconf;apr_pool_t*plog;/*Pooloflogstreams,reset_after_eachreadofconf*/apr_pool_t*ptemp;/*Poolfortemporaryconfigstuff,resetoften*/apr_pool_

5、t*pcommands;/*Poolfor-D,-Cand-cswitches*/apr_getopt_t*opt;apr_status_trv;module**mod;constchar*optarg;APR_OPTIONAL_FN_TYPE(ap_signal_server)*signal_server;AP_MONCONTROL(0);/*turnoffprofilingofstartup*/process=init_process(&argc,&argv);pglobal=process->pool;pconf=process->pconf;

6、ap_server_argv0=process->short_name;#ifAPR_CHARSET_EBCDICif(ap_init_ebcdic(pglobal)!=APR_SUCCESS){destroy_and_exit_process(process,1);}#endifapr_pool_create(&pcommands,pglobal);apr_pool_tag(pcommands,"pcommands");ap_server_pre_read_config=apr_array_make(pcommands,1,sizeof(char*

7、));ap_server_post_read_config=apr_array_make(pcommands,1,sizeof(char*));ap_server_config_defines=apr_array_make(pcommands,1,sizeof(char*));error=ap_setup_prelinked_modules(process);if(error){ap_log_error(APLOG_MARK,APLOG_STARTUP

8、APLOG_EMERG,0,NULL,"%s:%s",ap_server_argv0,error)

9、;destroy_and_exit_process(process,1);}ap_run_rewrite_a

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。