一、GoAhead嵌入式webserver--LINUX分支
在源码中的LINUX文件夹里面含有一个main.c文件以及一个Makefile文件,需要编译LINUX环境下的webserver程序,只需要make一下就行了。在这里就针对这个main的主函数进行分析,然后再进行树藤摸瓜进一步的分析源码,在目前的这些函数分析目前只能是对函数功能做出分析,还不能深入到整个webserver运行机制流程方面有个很好的理解。所以分析会有点乏味,但是其中的一些函数还有写得非常好的,具有很好的参考性。
二、原代码片段
int main(int argc, char** argv)
{
bopen(NULL, (60 * 1024), B_USE_MALLOC);
signal(SIGPIPE, SIG_IGN);
if (initWebs() < 0) {
return -1;
}
while (!finished) {
if (socketReady(-1) || socketSelect(-1, 1000)) {
socketProcess(-1);
}
websCgiCleanup();
emfSchedProcess();
}
websCloseServer();
socketClose();
bclose();
return 0;
}
以上就是一些源码,我将其中的一些SSL加密以及用户管理方面的代码删除掉了,这些并没有在这里贴出来,有兴趣的可以查看下源码。
三、main函数结构分析
在main函数中,总共有几个函数分别为 bopen()、 initWebs()、 socketReady()、socketSelect()、socketProcess()、websCgiCleanup()、emfSchedPr