getopt_long函数学习笔记
2009-04-06 11:18
253 查看
1.头文件
2.函数原型
int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);
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, 若碰到无法识别的长选项,返回'?'
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <getopt.h>
2.函数原型
int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);
longindex参数如果没有设置为NULL,那么它就指向一个变量,这个变量会被赋值为寻找到的长选项在longopts中的索引值
3.全局符号
(1)
struct option { char *name; int has_arg; int *flag; int val; };
一般每个长选项都对应一个短选项,两者是等价的,option结构就是用来定义长选项对应哪个短选项,name表示长选项的名称,val表示对应的短选项,比如{ "no-proxy", no_argument, NULL, 'N' },说明--no-proxy对应与-N。
has_arg可以取值如下:
no_argument 0 选项没有参数
requierd_argument 1 选项需要参数
optional_argument 2 选项参数可选
比如我们可以定义如下选项:
static const struct option longopts[] = { { "no-proxy", no_argument, NULL, 'N' }, { "output", required_argument, NULL, 'o' }, { "user-agent", required_argument, NULL, 'U' }, { "verbose", no_argument, NULL, 'v' }, { "quiet", no_argument, NULL, 'q' }, { "help", no_argument, NULL, 'h' }, { "version", no_argument, NULL, 'V' }, { NULL, no_argument, NULL, 0 } };
(2)
extern char *optarg extern int optind, optopt, opterr
假设使用下载工具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, 若碰到无法识别的长选项,返回'?'
相关文章推荐
- python学习笔记 返回函数
- [学习笔记]Python 常用函数
- SAS学习笔记之函数应用
- Python学习笔记11:Python函数和函数式编程
- 【Lua学习笔记】 --> 《字符串string与table的函数操作》
- Linux下面bzero函数学习笔记
- c++学习笔记(返回引用的函数)
- Numpy 的常用函数[学习笔记]
- UNP卷一学习笔记:高级I/O函数
- (3)JavaScript学习笔记 - 函数、对象、数组
- MySQL学习笔记(三):常用函数
- javascript学习笔记:函数与方法2
- C++学习笔记--从虚函数说开去
- 《JavaScript高级程序设计 第三版》学习笔记 (十三)高级函数
- freemarker学习笔记_表达式、变量和内建函数
- JavaScript 学习笔记十一 函数高级应用
- C++学习笔记——函数
- (原创)c#学习笔记06--函数02--变量的作用域02--参数和返回值与全局数据
- C语言学习笔记(1)--基本概念和函数用法
- 【JavaScript学习笔记】函数