getopt() 函数位于 unistd.h 系统头文件中
int getopt( int argc, char *const argv[], const char *optstring );
给定了命令参数的数量 ( argc) 、指向这些参数的数组 ( argv) 和选项字符串 ( optstring) 后, getopt() 将返回第一个选项,并设置一些全局变量。使用相同的参数再次调用该函数时,它将返回下一个选项,并设置相应的全局变量。如果不再有识别到的选项,将返回 -1 ,此任务就完成了。
getopt() 所设置的全局变量包括:
optarg—— 指向当前选项参数(如果有)的指针。
optind—— 再次调用 getopt() 时的下一个 argv 指针的索引。
optopt—— 最后一个已知选项。
对于每个选项,选项字符串 ( optstring) 中都包含一个对应的字符。具有参数的选项(如示例中的 -l 和 -o 选项)后面跟有一个 : 字符。示例所使用的 optstring 为 Il:o:vh?
示例:将演示一个假想的 doc2html 程序的命令行处理
-I 不创建关键字索引。
-l lang 转换为使用语言代码 lang 指定的语言。
-o outfile.html 将经过转换的文档写入到 outfile.html ,而不是打印到标准输出。
-v 进行转换时提供详细信息;可以多次指定,以提高诊断级别。 将
使用其他文件名称来作为输入文档。
还将支持 -h 和 -? ,以打印帮助消息来提示各个选项的用途。