FrontPage > NullHttpd > NullHttpd SCReading > NullHttpd SCReading Survey (Now)

はじめに

概観をつかみましょ〜。
ややこしくなるので、Windowsの関数とかはのせてませんー。

プログラム構成

関数のドキュメントを見て、なんとなく推測。

種類File名概略重要度
定義ファイルmain.h普通のヘッダ。
ただ、Windows用とその他OS用で定義が異なるように作ってある
#ifdefがややこしぃ....
☆☆★
実装ファイルmain.c今回のプログラムのエントリポイント。
ソケットの初期化と、 ソケット応答ループの開始
☆★★
cgi.cドキュメントが見当たらない。
こういうときは、関数の名前から推測しましょう。
んー、cgiを動的に作ってるのかな?
知らないC標準関数がいっぱいだった。
☆☆★
config.c構成用ファイルの作成と、System 設定。
printf文にそう書いてある。
☆☆★
files.cファイル送信と、ディレクトリリスト作成?
ほとんど手がかりがない。
time構造体、**dir()関数とかを使っているので、そう推測
☆★★
format.cURL関連?
Stringとかに対して処理する関数が多い。
いまいち、機能がつかめなかった。
☆☆☆
http.cHTTPの使用にのっとって色々する関数群?
引数の多い関数があるので、大事そう。
☆★★
server.c見るからに大事そう...(笑
サーバ関連の処理。
ここも#ifdefがいっぱいあってめんどくさい。
★★★
win32.cwin32に関するもの。
さっと見た感じUnix系で使わない処理も多い..?
☆☆☆

プログラムのエントリポイント

main.c 内の main(); から実行される。

Purpose : Program entry point (UNIX) and call accept loop

main.c 内のドキュメントに書いてありました。
ちなみに、windowsユーザは、WinMain?(); という別のメイン関数で始まる。

main() の処理

1
2
3
4
5
6
7
int main(int argc, char *argv[])
{
        snprintf(program_name, sizeof(program_name)-1, "%s", argv[0]);
        init();
        accept_loop(NULL);
        return 0;
}

init() と accept_loop() を呼び出しています。

ユーザとプログラムの関係

まずは、どこから調べようかな...。
init() と、accept_loop() の中身を見てみないことにはわかりません。
と、ここで気がついたことが1つありました。
一度もコンパイルしてないじゃん?
いそいそと、コンパイルして、動作を確認しました。

ユーザイベント

ユーザイベントハンドリング

プログラムレスポンス


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-09-05 (土) 07:53:27 (3788d)
Ads by Sitemix