linux中函数getopt_long用法解释

来源头文件:#include <getopt.h>


int getopt_long(int agrc,  char * const argv[], const char *optstring, const struct option *longopts, int *longindex)

optstring:短选项组成的字符串

option结构数组,option结构称为长选项表,其声明如下:
 struct option {
              const char *name;//长选项名字
              int has_arg;//有无参数,见参数列表
              int *flag;//NULL,getopt_long返回val字段的值, not NULL, getopt_long返回0
              int val;//短选项。如果flag是NULL,那么val通常是个字符常量,如果短选项和长选项一致,那么该字符就应该与optstring中出现的//这个选项的参数相同;
          };

has_arg参数列表:

符号常量             数值            含义
no_argument            0            选项没有参数
required_argument      1            选项需要参数
optional_argument      2            选项参数是可选的

int val:
如果flag是NULL,那么val通常是个字符常量,如果短选项和长选项一致,那么该字符就应该与optstring中
出现的这个选项的参数相同;


Linux 命令行约定:
     几乎所有的GNU/Linux程序都遵循一些命令行参数定义的约定。程序希望出现的参数可以分成两种:选

项(options or flags)、其他类型的的参数。Options修饰了程序运行的方式,其他类型的参数则提供了输

入(例如,输入文件的名称)。

     对于options类型参数可以有两种方式:
     1)短选项(short options):顾名思义,就是短小参数。它们通常包含一个连字号和一个字母(大写

或小写字母)。例如:-s,-h等。
     2)长选项(long options):长选项,包含了两个连字号和一些大小写字母组成的单词。例如,--

size,--help等。
     *注:一个程序通常会提供包括short options和long options两种参数形式的参数。

     对于其他类型参数的说明:
     这种类型的参数,通常跟随在options类型参数之后。例如,ls –s /功能为显示root目录的大小。’/

’这个参数告诉ls要显示目录的路径。



例如在webbench开源项目中

staticconststruct 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 }};

optstring = "912Vft:p:c:?h",其中-tpc代表后面要接参数

表示通式: character+':' 表示需要有参数

character+'::' 表示参数是可选择的

character+''表示无参数

例子: optstring = "abc:dfL::lnhd:e:p:l"

-abdflnhl:无参数

-cLdep:有参数

-L:有可选择的参数


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值