Thttpd源程式解析12 fdwatch c檔案

2021-09-24 06:23:09 字數 1294 閱讀 2128

fdwatch.c檔案的主要作用是管理伺服器的檔案描述符。

static int nfiles; //最大支援監聽的檔案的數量

static long nwatches; //監聽的檔案的數量

static int* fd_rw; //檔案描述符的讀寫狀態陣列

static void** fd_data; //讀寫檔案描述符的資料二維陣列

static int nreturned; //當前可以使用的檔案描述符的數量

static int next_ridx; //下乙個需要讀取的檔案描述符的索引值

這幾個巨集根據系統的支援和使用者的定義進行配置

which:指定使用管理檔案描述符的模型

init( nf ):初始化此模型的相關引數以及模型的陣列的大小

add_fd( fd, rw ) :向模型中新增檔案描述符

del_fd( fd ) :從模型中刪除檔案描述符

watch( timeout_msecs ) :返回準備好讀寫或者異常處理的描述符的數量

check_fd( fd ):返回此檔案描述符的狀態

get_fd( ridx ) :返回此索引號在準備好讀寫異常處理的描述符陣列中的狀態。

下面以poll模型進行描述。

int fdwatch_get_nfiles( void )

依據使用者的設定和系統的狀態初始化對應模型陣列的大小,並返回此大小。

void fdwatch_add_fd( int fd, void* client_data, int rw )

向對應模型的陣列中新增此檔案描述符,並在對應的讀寫狀態陣列和使用者資料陣列中更新對應的資料。

void fdwatch_del_fd( int fd )

向對應模型的陣列中刪除此檔案描述符,並在對應的讀寫狀態陣列和使用者資料陣列中更新對應的資料。

int fdwatch( long timeout_msecs )

讀取對應模型陣列中已經準備好讀,寫,異常處理的檔案描述符的數量,並更新對應檔案描述符陣列和讀寫異常處理檔案描述符陣列的狀態,返回已經準備好讀,寫,異常處理的檔案描述符的數量。

int fdwatch_check_fd( int fd )

根據傳入的檔案描述符,返回此檔案描述符是否處於可讀,寫,異常處理的狀態

void* fdwatch_get_next_client_data( void )

返回下乙個可以執行的檔案描述符標識。

void fdwatch_logstats( long secs )

列印檔案描述符的相關資訊,監測的檔案描述符的數量,模型名稱,每秒監測的數量。

Thttpd源程式解析3 Thttpd配置

thttpd在啟動時可以進行配置,可以使用命令的方式也可以使用配置檔案的方式,這裡將對於命令的方式進行配置。下面講解每個命令的意義。1 v 作用 輸出thttpd伺服器的版本資訊,然後退出thttpd程式。注意 當命令引數中有 v引數將會導致程式的退出。2 c 注意 c 後面要直接接檔案的路徑。3 ...

Thttpd源程式解析10 timer c檔案

thttpd伺服器對於請求處理,請求響應和cgi子程式的執行時間是有限制的,這裡面限制是由timer.c檔案中的函式完成的。計時器的結構為 typedef struct timerstruct timer 由此可知此結構為乙個雙向鍊錶結構。timer proc為延時處理函式。client data為...

Thttpd源程式解析6 GET和POST的區別

前端面試的時候面試官可能會問你get方法和post的方法的區別,很多書上會說get的請求長度是受限制的,請求在url中等等等下面我們將看thttpd處理get和post方法時怎樣處理。一般的http請求將會分為3各部分以回車換行符間隔 1 起始行 起始行 需要表明請求的方法 請求的檔案的路徑 相對於...