Chinaunix首页 | 论坛 | 博客
  • 博客访问: 306063
  • 博文数量: 94
  • 博客积分: 2163
  • 博客等级: 大尉
  • 技术积分: 932
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-20 09:23
文章存档

2012年(2)

2011年(92)

分类: LINUX

2011-10-14 09:56:34

我先说一下总体流程:wget程序实在是不小,应该是考虑很周密的原因。和其他程序一开始一样,都是要经过初始化的(在/src目录下也有其他的有main()入口,那是测试使用的,一般在上面都有这样类似的预定义:
35 #ifndef TESTING
36 #error "TESTING not set!!!"
37 #endif
)。
初始化:1、包括字符集的初始化;

2、程序一些默认参数的初始化;

3、对所能是使用命令行的初始化;

4、前面的单独的getopt_long是在用户选项之前找到注册文件,并解析;如果没有注册,那么就初始化;

5、后面的get_long是根据用户选项来设置命令,比如一个长选项 accept ,它会在前面加上—accept,然后这里是个解析用分隔符分开的元素,
用n个数组来指向有n-1 ','分隔符的字符串,然活用来分别设置。

6、下面是全部进行对初始化的options进行检查,必要的就设置,出错就打印错误;

7、下面是对sock_init(),因为下面会使用网络,先进行初始化;

8、如果详细监视opt.verbose的话,初始化一些程序起监督作用。

9、后面就是检查采用的什么类型的协议,比如ftp,或者http,然后从新写成http:// xxx. xxx.xxx.xxx格式,并保存在一个url数组里。

10、初始化日志文件。

11、初始化虚拟文件系统作为输出的目的地(如果VMS被定义)

12、设置信号量比如如果定义信号SIGNUP,那么就初始化这个信号函数,这是将输出信息打印到logfile中的重定向。

13、设置url及其接受到文件内容编码格式。

14、将url解析成 路径(path),端口(port),(主机名)(host),请求参数(query)等。

15、检索url地址,并用函数gethostbyname取得servent结构,通过函数retrive_url-> . . .-> gethttp()这里就是网路连接。其他类似。

17、最后选择是装载cookies.

18、打印失败的连接。

19、记录时间,并销毁计时器。

20、最后是清除前面分配东西,如果#ifdef DEBUG_MALLOC
阅读(3339) | 评论(0) | 转发(0) |
0

上一篇:一个反汇编的 = 分析

下一篇:随想

给主人留下些什么吧!~~