2023年3月12日
niesongsong
1.錯誤定義
分析原始碼從最簡單的地方入手,首先來看nginx的錯誤碼定義,**在ngx_errno.h,ngx_errno.h檔案中。一共就兩個函式。
u_char
*ngx_strerror
(ngx_err_t
err,
u_char
*errstr
,size_t
size
);ngx_uint_t
ngx_strerror_init
(void
);系統啟動時會初始化全域性變數ngx_sys_errlist,這是乙個全域性ngx_str_t陣列,陣列大小為ngx_sys_nerr,每個元素都乙個結構體為:
typedef
struct
ngx_str_t
;初始化:ngx_uint_t ngx_strerror_init
所以初始化的函式是填充每乙個元素,該元素的陣列下標即為錯誤碼,元素len成員是指元素data字串的大小,data是該錯誤碼(陣列下標)的文字描述,通過函式strerror(err)來取得錯誤碼的資訊串。
獲取錯誤碼對應的資訊串:ngx_strerror
在ngx_sys_errlist找到err對應位置的錯誤資訊,如果錯誤碼不在陣列下標範圍則返回未知錯誤,同時檢查傳入的長度,太小於將會截斷錯誤資訊串。
分類:
linux, nginx
標籤:
2023年2月28日
niesongsong
2.mingw32:
3.vc2010 express:
cmd2.設定vc的環境變數:在命令提示符中鍵入命令(根據vc的安裝目錄不同而不同,x86為引數)
"c:\program files\microsoft visual studio 10.0\vc\vcvarsall.bat" x86設定mingw:在命令提示符鍵入命令(根據mingw32安裝目錄不同而不同):
c:\mingw\msys\1.0\msys.bat檢查環境:
彈出mingw視窗,關閉其它的cmd視窗。在mingw32的視窗輸入:
cl.exe
cd /f/nginx/trunk配置:
./auto/configure --prefix=. --with-cc-opt="-d fd_setsize=4096" --without-http_rewrite_module --without-http_gzip_module --with-cc=cl註解:
–prefix=. 表示安裝目錄在本目錄下
–with-cc-opt=」-d fd_setsize=4096″ 預定義巨集fd_setsize大小4096
–without-http_rewrite_module 不載入rewite模組
–without-http_gzip_module 不載入gzip模組
–with-cc=cl 編譯器為cl
編譯:
nmake在obj/目錄下為生成的中間檔案和nginx.exe檔案。
nginx 原始碼分析
近期準備研究一下nginx原始碼,此處記錄一下。計畫 1 了解evan miller 的文章 2 了解nginx的組織架構 3 了解nginx的基本資料結構 4 熟悉nginx的主要module及執行機制,主要是core http event os 5 簡單的module開發及測試 一 準備 為了方...
nginx原始碼分析 從原始碼看nginx框架總結
nginx原始碼總結 1 中沒有特別繞特別彆扭的編碼實現,從變數的定義呼叫函式的實現封裝,都非常恰當,比如從函式命名或者變數命名就可以看出來定義的大體意義,函式的基本功能,再好的架構實現在編碼習慣差的人實現也會黯然失色,如果透徹理解 的實現,領悟架構的設計初衷,覺得每塊 就想經過耐心雕琢一樣,不僅僅...
Nginx原始碼分析 connections陣列
本文的標題讓我糾結了好久,不知道是connections陣列合適,還是connections鍊錶更合適 nginx在此或多或少的注入了二者的特點,先不管是叫陣列還是叫鍊錶吧,只要能夠弄明白這個connections是怎麼回事就大功告成。nginx的每個worker程序都使用乙個相同的connecti...