larbin源碼分析(十二) global文件中的四個init初始化模塊函數
一 在global.cc文件中的global構造函數中,存在四個初始化模塊函數 initSpecific() , initInput() , initOutput() , initSite() 。
下面分別分析這四個初始化函數的作用。
(1) initSpecific 函數定義在 file.cc文件中。然而卻沒有具體的實現,據估計是用作 處理 網頁中出現的jpg 等多媒體文件的。
(2)initInput() 函數 ,實際上只有定義了thread_output才有實現。
(3)initOutput()函數,實際上該函數主要是調用了useroutput.cc中的inituseroutput()函數。
函數的主要作用是將爬取的網頁存儲在計算機硬盤中。
根據options.h頭文件中,可以使用不同的
#ifdef SIMPLE_SAVE
#include "interf/saveuseroutput.cc"
該類文件的具體實現
void initUserOutput () { 實質上是構建存儲文件
mkdir(saveDir, S_IRWXU); //創建存儲目錄 /save
endFileName = strlen(saveDir); //獲取文件的長度
fileName = new char[endFileName+maxUrlSize+50]; //分配文件名稱
strcpy(fileName, saveDir);
if (fileName[endFileName-1] != '/') fileName[endFileName++] = '/';
strcpy(fileName+endFileName, "d00000/f00000");
endFileName += 12; // indique le dernier char ecrit
}
#elif defined(MIRROR_SAVE)
#include "interf/mirrorsaveuseroutput.cc"
#elif defined(STATS_OUTPUT)
#include "interf/statsuseroutput.cc"
#else // DEFAULT_OUTPUT
#include "interf/defaultuseroutput.cc" 該文件中基本無定義實現