Clamav杀毒软件源码分析笔记 二

                 

  Clamav杀毒软件源码分析笔记[二]


刺猬@http://blog.csdn.net/littlehedgehog





[读取命令行参数]


开始正儿八经地分析源码了. 从哪里入手呢,当然还是按照书上的来,我们先来看看Clamd的程序如何从生到死,Clamd是杀毒软件的服务端,我们在客户端提交要查杀的信息,然后Clamd服务端进行按照我们指令办事,然后把结果返回给我们。这个貌似是unix程序的一个经典构架了,所谓的客户端直接跟用户打交道,然后解析用户输入,把真正要做的工作再传给服务端完成。服务端其实是一个无名英雄了。 话说回来这里第一步我们就要处理命令行下琐碎的各个参数选项.为了让Clamd服务端按照我们要求来运行,这貌似是个相当麻烦的工作,比女人都麻烦,呵呵. 不过还好网上有不少linux fans 都写过相应的博文了.  还是先来看源码吧: [./clamd/options.c]


  1. /* 这个是clamd的主函数 文件名为options,那么这个主函数就主要在处理这个选项(参数选项)问题了*/
  2. int main(int argc, char **argv)
  3. {
  4.     int ret, opt_index, i, len;
  5.     struct optstruct *opt;
  6.     const char *getopt_parameters = "hc:V";
  7.     static struct option long_options[] =
  8.     {
  9.         { "help", 0, 0, 'h'},
  10.         { "config-file", 1, 0, 'c'},
  11.         { "version", 0, 0, 'V'},
  12.         { "debug", 0, 0, 0},
  13.         {0, 0, 0, 0}
  14.     };
  15. #if defined(C_LINUX) && defined(CL_DEBUG)
  16.     /* njh@bandsman.co.uk: create a dump if needed */
  17.     struct rlimit rlim;
  18.     rlim.rlim_cur = rlim.rlim_max = RLIM_INFINITY;
  19.     if (setrlimit(RLIMIT_CORE, &rlim) < 0)
  20.         perror("setrlimit");
  21. #endif
  22.     opt=(struct optstruct*)mcalloc(1, sizeof(struct optstruct));
  23.     opt->optlist = NULL;
  24.     opt->filename = NULL;
  25.     while (1)
  26.     {
  27.         opt_index=0;
  28.         ret=getopt_long(argc, argv, getopt_parameters, long_options, &opt_index);
  29.         if (ret == -1)
  30.             break;
  31.         switch (ret)
  32.         {
  33.         case 0:
  34.             register_long_option(opt, long_options[opt_index].nam
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值