Apache源代码分析
tingya
这个作者很懒,什么都没留下…
展开
-
Apache中的挂钩剖析(3)
5.5.7 可选挂钩与标准挂钩相比,可选挂钩基本上没有太大的差异,唯一的区别就在于可选挂钩不一定需要被实现——这看起来令人迷惑的。不过你很快就会明白了。考虑一下,如果某个挂钩Hook_A是声明在一个可选模块中,那么正常情况下该模块没有被加载。如此此时某个模块想使用挂钩Hook_A,那么会发生什么情况呢。对于标准模块,Apache可能根本就无法进行编译。而可选挂钩则可以解决这种问题。对于可选挂钩原创 2006-02-14 10:09:00 · 4310 阅读 · 0 评论 -
Apache中的挂钩剖析(2)
5.5.5 挂钩函数(APR_IMPLEMENT_EXTERNAL_HOOK_BASE)从宏的名字我们就可以大体看出该宏实际上是实现了具体的挂钩注册函数,如果将其展开后我们会更加一目了然。该宏的定义也是冗长的很,如下所示:#define APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) /link##_DECLARE(void) ns##_h原创 2006-02-14 09:51:00 · 4048 阅读 · 4 评论 -
apache中的文件与目录(2)
4.4 打开文件文件打开应该是使用的最多的文件操作了,任何文件在使用之前都必须首先打开。ANSI C标准库和Unix系统库函数都提供对“打开文件”这个操作语义的支持。他们提供的接口很相似,参数一般都为“文件名+打开标志位+权限标志位”,Apache中提供了apr_file_open函数来支持文件打开操作,该函数只是在原有的标准库的基础上进行了少许的封装。apr_file_open无法忽略习惯的原创 2006-02-12 13:34:00 · 4462 阅读 · 3 评论 -
Apache内存池内幕(1)
对于APR中的所有的对象中,内存池对象应该是其余对象内存分配的基础,不仅是APR中的对象,而且对于整个Apache中的大部分对象的内存都是从内存池中进行分配的,因此我们将把内存池作为整个APR的基础。2.1 内存池概述在C语言中,内存管理的问题臭名昭著,一直是开发人员最头疼的问题。对于小型程序而言,少许的内存问题,比如内存泄露可能还能忍受,但是对于Apache这种大负载量的服务器而言,内存原创 2005-12-08 18:30:00 · 21230 阅读 · 34 评论