`
kenby
  • 浏览: 717250 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

getopt_long函数学习笔记

阅读更多

1.头文件

2.函数原型

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

longindex参数如果没有设置为NULL,那么它就指向一个变量,这个变量会被赋值为寻找到的长选项在longopts中的索引值

3.全局符号

(1)

一般每个长选项都对应一个短选项,两者是等价的,option结构就是用来定义长选项对应哪个短选项,name表示长选项的名称,val表示对应的短选项,比如{ "no-proxy", no_argument, NULL, 'N' },说明--no-proxy对应与-N。

has_arg可以取值如下:

no_argument 0 选项没有参数

requierd_argument 1 选项需要参数

optional_argument 2 选项参数可选

比如我们可以定义如下选项:


(2)

假设使用下载工具axel:

axel -q --no-proxy --max-speed=150 http://blog.csdn.net/kenby/index.html

初始时,optind的值为1,指向第1个参数,每调用一次getopt_long,optind就向后移一个单位,指向第二个参数,这样optind总是指向下一个要处理的参数,optarg表示参数的值,比如但处理max-speed时,optarg的值为150

4.函数返回值

(1)若没有命令行参数,返回-1

(2)若碰到匹配的短选项, 返回对应的字符,比如碰到-N, 返回'N',若碰到匹配的长选项,返回在option数组里面定义的val,

比如碰到--no-proxy, 返回'N'。

(3)若碰到无法识别的短选项,返回-1, 若碰到无法识别的长选项,返回'?'


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics