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" 该文件中基本无定义实现