分类: LINUX
2008-11-19 11:24:02
使用getopt_long()需要引入头文件
#include
现在我们使用一个例子来说明它的使用。
一个应用程序需要如下的短选项和长选项。
短选项 | 长选项 | 作用 |
-h | --help | 输出程序命令行参数说明然后退出 |
-o filename | --output filename | 给定输出文件名 |
-v | --version | 显示程序当前版本后退后 |
为了使用getopt_long函数,我们需要先确定两个结构:
1.一个字符串,包括所需要的短选项字符,如果选项后有参数,字符后加一个":"符号。本例中,这个字符串应该为"ho:v"。(因为-o后面有参数filename,所以字符后面要加":")
2.一个包含长选项字符串的结构体数组,每一个结构体包含4个域,第一个域为长选项字符串,第二个域是一个标识,只能为0或1,分别代表没有、有。第三个域永远为NULL。第四个域为对应的短选项字符串(即getopt_long函数的返回值)。结构体数组的最后一个元素全部为NULL和0,标识结束。在本例中,它应该像一下的样子:
|
调用时需要把main的两个参数argc和argv以及上述两个数据结构传给getopt_long。
每次调用getopt_long,它会解析一个符号,返回相应的短选项字符,如果解析完毕返回-1。所以需要使用一个循环来处理所有的参数,而相应的循环里会使用switch语句进行选择。如果getopt_long遇到一个无效的选项字符,它会打印一个错误消息并且返回'?',很多程序会打印出帮助信息并且中止运行;当getopt_long解析到一个长选项并且发现后面没有参数则返回':',表示缺乏参数。当处理一个参数时,全局变量optarg指向下一个要处理的变量。当getopt_long处理完所有的选项后,全局变量optind指向第一个未知的选项索引。
这一个例子代码为下:
|