getopt.h 头文件说明

时间:2022-07-20 01:08:46

详情请看:http://blog.chinaunix.net/uid-738944-id-3474852.html

1. 定义长参数的列表

static const struct option long_options[]=

{

 {"force",no_argument,&force,1},

 {"reload",no_argument,&force_reload,1},

 {"time",required_argument,NULL,'t'},

 {"help",no_argument,NULL,'?'},

 {"http09",no_argument,NULL,'9'},

 {"http10",no_argument,NULL,'1'},

 {"http11",no_argument,NULL,'2'},

 {"get",no_argument,&method,METHOD_GET},

 {"head",no_argument,&method,METHOD_HEAD},

 {"options",no_argument,&method,METHOD_OPTIONS},

 {"trace",no_argument,&method,METHOD_TRACE},

 {"version",no_argument,NULL,'V'},

 {"proxy",required_argument,NULL,'p'},

 {"clients",required_argument,NULL,'c'},

 {NULL,0,NULL,0}

};

2. 读取长参数和短参数,并解析参数

while((opt=getopt_long(argc,argv,"912Vfrt:p:c:?h",long_options,&options_index))!=EOF )

  {

  switch(opt)

  {

    case  0 : break;

    case 'f': force=1;break;

    case 'r': force_reload=1;break;

    case 'c': clients=atoi(optarg);break;

  }

  }


3. 全局参数

extern char *optarg;
extern int optind, opterr, optopt;

optarg: 当前选项带参数时,optarg指向该参数。
optind: argv的索引。通常选项参数取得完毕时,通过此变量可以取得非选项参数(argv[optind])
optopt: 一个选项在argv中有,但在optstring中不存在时,或者一个带参数的选项没有参数时,
        getopt()返回'?',同时将optopt设为该选项。
opterr: 将此变量设置为0,可以抑制getopt()输出错误信息。