| thttpd源代碼閱讀筆記 thttpd是一個(gè)非常小巧的輕量級(jí)web server,適合做嵌入式web服務(wù)器,它的官方網(wǎng)站是http://www./software/thttpd/ 。 在fedora 12下編譯,有錯(cuò)誤: 原因是getline 已加入 POSIX 2008,可以把extras/htpasswd.c 里面的getline重命名為get_line或別的。 代碼根目錄下,就這幾個(gè)文件: extras子目錄兩個(gè) main函數(shù)在 thttpd.c 編寫守護(hù)進(jìn)程(daemon)遵循的一般步驟: 除了上面所提的步驟,thttpd.c 跟其他服務(wù)器軟件一樣,解析參數(shù),信號(hào)的處理,讀取配置文件等。 Apache采用多進(jìn)程模型響應(yīng)用戶請(qǐng)求,thttpd對(duì)并發(fā)請(qǐng)求不使用 fork()來派生子進(jìn)程處理,采用IO多路復(fù)用解決方案。代碼在fdwatch.c/h,對(duì)select()/poll()/kqueue()進(jìn)行了封裝,也加上了超時(shí)處理機(jī)制,跟Android RIL串口多路服用的代碼非常相似。 至于socket網(wǎng)絡(luò)編程,對(duì)HTTP/1.1協(xié)議的支持,都在libhttpd.c里面處理。 注意到了兩個(gè)文本文件 mime_encodings.txt mime_types.txt,在Makefile.in里做處理,用sed格式化,生成mime_types.h,mime_encodings.h,在libhttpd.c中 再#include 進(jìn)來,這是很常見的程序設(shè)計(jì)方法,好處就是修改方便,不容易出錯(cuò)。 If you enjoyed this post, make sure you subscribe to my RSS feed!  | 
|  |