我找的例子是一個統計日志的工具,webalizer. (這個工具我以前用過,似乎記得以前的版本是用perl寫的,不知道現在為什么作者把它完全修改成了C,可能是為了效率,也可能根本就是我記錯了。)之所以選擇這個軟件來作為例子,一方面是因為它是用C寫的,流程比較簡單,沒有C++的程序那么多的枝節,而且軟件功能不算復雜,代碼規模不大,能夠在一篇文章的篇幅里面講完; 另外一個方面是因為恰巧前段時間我因為工作的關系把它拿來修改了一下,剛看過,還沒有忘記。 :-)我采用的例子是webalizer2.01-09, 也可以到它的網站http://www.mrunix.net/webalizer/下載最新的版本。這是一個用C寫的,處理文本文件(簡單的說是這樣,實際上它支持三種日志文本格式:CLF, FTP, SQUID), 并且用html的方式輸出結果。讀者可以自己去下載它的源代碼包,并一邊讀文章,一邊看程序。解壓縮它的tar包(我download的是它的源代碼tar包),在文件目錄中看到這樣的結果:
$ ls
aclocal.m4 dns_resolv.c lang output.h webalizer.1
CHANGES dns_resolv.h lang.h parser.c webalizer.c
configure graphs.c linklist.c parser.h webalizer.h
configure.in graphs.h linklist.h preserve.c webalizer_lang.h
COPYING hashtab.c Makefile.in preserve.h webalizer.LSM
Copyright hashtab.h Makefile.std README webalizer.png
country-codes.txt INSTALL msfree.png README.FIRST
DNS.README install-sh output.c sample.conf
首先,我閱讀了它的README(這是很重要的一個環節), 大體了解了軟件的功能,歷史狀況,修改日志,安裝方法等等。然后是安裝并且按照說明中的缺省方式來運行它,看看它的輸出結果。(安裝比較簡單,因為它帶了一個configure, 在沒有特殊情況出現的時候,簡單的./configure, make, make install就可以安裝好。)然后就是閱讀源代碼了。我從makefile開始入手(我覺得這是了解一個軟件的最好的方法)在makefile開頭,有這些內容:
prefix = /usr/local
exec_prefix = ${prefix}
BINDIR = ${exec_prefix}/bin
MANDIR = ${prefix}/man/man1
ETCDIR = /etc
CC = gcc
文章來源于領測軟件測試網 http://www.kjueaiud.com/