写了个简单的helloworld,运行了下,还是比较的顺利,记录下来。
主程序:
Makefile
在配置文件中添加:
启动apache
在游览器中打入 http://10.13.127.224:8880/helloword
Hello World!
This is the Apache HelloWorld module!
接下来对程序进行简单的介绍,我们看到27-26行定义了一个结构,这个就是apache模块的结构,我们可以看到整个结构基本是默认或者NULL,只有最后面的有个 helloworld_register_hooks ,它是一个函数指针,指向的函数就是定义在 23-26行,主要是用来注册钩子函数的,当前的程序只注册一个钩子函数 ap_hook_handler,它的参数分别是钩子处理函数指针、前缀模块名字、后缀模块名字以及挂钩的综合排序参数。
当用户请求过来的时候,系统会调用钩子函数ap_hook_handler,我们发现里面有个strcmp( r->handler, "helloworld" ) != 0的判断,这个是为什么呢?
这是因为系统在定位钩子函数的时候,它首先定位到钩子,接着遍历钩子函数,直到找到对应的处理函数为止,所以在这里进行这么一个判断,防止处理了不应该接受的请求。