//(1.1)前提內容和修改//使用配置檔案,使我們的伺服器程式有了極大的靈活性,是我們作為伺服器程式開發者,必須要首先搞定的問題;
//以#號開頭的行作為注釋行(注釋行可以有中文)
//我們這個框架(專案),第乙個要解決的問題是讀取配置檔案中的配置項(讀到記憶體中來);
//(1.2)配置檔案讀取功能實戰**
//寫**要多顧及別人感受,讓別人更容易讀懂和理解,不要刻意去炫技;這種炫技的人特別討厭;
//該縮排的必須要縮排,該對齊的要對齊,該注釋的要注釋,這些切記
//valgrind:幫助程式設計師尋找程式裡的bug和改進程式效能的工具集。擅長是發現記憶體的管理問題;//裡邊有若干工具,其中最重要的是memcheck(記憶體檢查)工具,用於檢查記憶體的洩漏;
//a)使用未初始化的記憶體//b)使用已經釋放了的記憶體
//c)使用超過malloc()分配的記憶體
//d)對堆疊的非法訪問
//e)申請的記憶體是否有釋放*****
//f)malloc/free,new/delete申請和釋放記憶體的匹配
//g)memcpy()記憶體拷貝函式中源指標和目標指標重疊;
//所有應該釋放的記憶體,都要釋放掉,作為伺服器程式開發者,要絕對的嚴謹和認真//格式:
//valgrind --tool=memcheck 一些開關 可執行檔名
//--tool=memcheck :使用valgrind工具集中的memcheck工具
//--leak-check=full : 指的是完全full檢查記憶體洩漏
//--show-reachable=yes :是顯示記憶體洩漏的地點
//--trace-children = yes :是否跟入子程序
//--log-file=log.txt:講除錯資訊輸出到log.txt,不輸出到螢幕
//最終用的命令:
//valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./nginx
//檢視記憶體洩漏的三個地方:
//(1) 9 allocs, 8 frees 差值是1,就沒洩漏,超過1就有洩漏
//(2)中間諸如: by 0x401363: cconfig::load(char const*) (ngx_c_conf.cxx:77)和我們自己的源**有關的提示,就要注意;
//(3)leak summary:definitely lost: 1,100 bytes in 2 blocks
原理和實現思路分析//argc:命令列引數的個數
//ar**:是個陣列,每個陣列元素都是指向乙個字串的char *,裡邊儲存的內容是所有命令列引數;
//./nginx -v -s 5
//argc = 4
//ar**[0] = ./nginx ----指向的就是可執行程式名: ./nginx
//ar**[1] = -v
//ar**[2] = -s
//ar**[3] = 5
//比如你輸入 ./nginx -12 -v 568 -q gess
//ar**記憶體之後,接著連續的就是環境變數引數資訊記憶體【是咱們這個可執行程式執行時有關的所有環境變數引數資訊】
//可以通過乙個全域性的environ[char **]就可以訪問
//environ記憶體和ar**記憶體緊緊的挨著
//修改可執行程式的實現思路:
//(1)重新分配一塊記憶體,用來儲存environ中的內容;
//(2)修改ar**[0]所指向的記憶體;
讀配置檔案
tchar szpath max path memset szpath,0,sizeof szpath getmodulefilename null,szpath,max path cstring strpath szpath strpath strpath.left strpath.reverse...
讀配置檔案2
資料 host 1 ip 16.173.234.228 port 21,80,873,3306 cpu 10 freemem 3 conconn 1000 checkgw 1 freedisk 10 swapused 30000 host host 2 ip 16.173.235.25 port 2...
Php讀配置檔案
馬永佔,myz,mayongzhan php讀配置檔案 馬永佔,myz,mayongzhan 要讀的格式 php.ini this is demo by 馬永佔 myz global i 1j 2 k 3 self a 11 b 22 c 33 讀的方法 name test4.php date mo...