linux中函数getopt_long用法解释

来源头文件:#include


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:有可选择的参数


你可能感兴趣的:(webbench,unix网络编程)