linux 中getopt和getopt_long 用法解析
来源:互联网 发布:centos 安装jdk1.7 编辑:程序博客网 时间:2024/05/17 21:41
linux 英文手册:
http://man7.org/linux/man-pages/man3/getopt.3.html
参考博客:
http://blog.csdn.net/lyh66/article/details/50098739
getopt解析参数
运行main(argc,argv),使用getopt(argc,argv,optstring)解析参数
参数optstring为选项字符串, 告知 getopt()可以处理哪个选项以及哪个选项需要参数,如果选项字符串里的字母后接着冒号“:”,则表示还有相关的参数。
如getopt(argc, argv, “ls:fc:h::d:”)中,l和f 选项不需要参数,s,c,d需要参数,h可以有参数也可以没有参数。
如在命令行:gcc -o main main.c
main -l -s aa -f -c kk
1.单个字符,表示选项,l,s,f,c,h,d均为选项
2.单个字符后接一个冒号:表示该选项后必须跟一个参数,参数紧跟在选项 后或者以空格隔开,该参数的指针赋给optarg
3.单 个字符后跟两个冒号,表示该选项后可以跟一个参数,也可以不跟。如果跟一个参数,参数必须紧跟在选项后不能以空格隔开,如果没有跟参数,则 optarg=NULL。
返回值
getopt()每次调用会逐次返回命令行传入的参数,当没有参数的最后的一次调用时,getopt()将返回-1
当解析到一个不在optstring里面的参数,或者一个必选值参数不带值时,返回’?’
其 它情况可以看上边链接,例子也可以看上边链接
getopt_long解析参数
int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);
getopt_long除了可以支持-开始的单字符开始选项,还支持–开始选项。如果只支持–开始选项,将optstring设置为”“。
struct option { const char *name; int has_arg; int *flag; int val;};
结构体option各个字段的意思如下:
name 长选项的名字
has_arg
no_argument(或0):选项不携带参数;required_argument(或1):选项需要参数;optional_argument(或2):选项携带参数可选
flag
指定该长选项的返回值。如果flag是NULL,getopt_long会返回val。(比如,调用者可以设置val为短选项字符)否则,getopt_long会返回0,且flag指向的值设置为val的值,前提是该选项成功找到了。
val
当做返回值,或把值加载进flag所指的内存中。
longopts指向的数组的最后一个元素值都设置为0。
如果longindex不是NULL,则它指向getopt_long()获得的长选项longopts的下标。
- linux 中getopt和getopt_long 用法解析
- getopt()和getopt_long()用法
- getopt()和getopt_long()用法
- getopt()和getopt_long()用法
- getopt和getopt_long函数用法
- linux getopt 和getopt_long详解
- Linux getopt和getopt_long函数
- Linux解析命令行选项参数getopt和getopt_long
- C语言中getopt()和getopt_long()函数的用法
- linux 中解析命令行参数 (getopt_long用法)
- linux 中解析命令行参数(getopt_long用法)
- linux 中解析命令行参数(getopt_long用法)
- linux中解析命令行参数(getopt_long用法)
- 选项解析:getopt() 和 getopt_long()函数
- 命令行参数解析: getopt()和getopt_long()
- getopt函数和getopt_long函数 解析命令行
- getopt函数和getopt_long函数 解析命令行
- getopt、getopt_long和getopt_long_only解析命令行参数
- iOS开发中遇到的那些坑
- 标准库begin和end;除法的舍入规则;sizeof用于类成员;
- 长度是怎样炼成的(三)
- 用代码设置控件显示的颜色
- Android Sensor Framework(狠详)
- linux 中getopt和getopt_long 用法解析
- 用php生成静态html页面
- 长度是怎样炼成的(四)
- 使用FreeMaker生成静态HTML
- plist 文件、slider、stepper的使用
- 今年暑假不AC
- 怎样用java连接mysql
- [李景山php]thinkphp核心源码注释|Lite.class.php
- C#: Thread.Sleep(0) vs Sleep(1) vs Yeild