一般的用法为while(getopt_long() != -1){},可以通过switch语句来对该函数不同的返回值(即不同的短选项)调用不同的处理函数。
#include <stdio.h>
#include <unistd.h>
#define _GNU_SOURCE
#include <getopt.h>
int main(int argc,char *argv[])
{
int opt;
struct option longopts[] = {
{"initialize",0,NULL,'1'},
{"file",1,NULL,'f'},
{"list",0,NULL,'1'},
{"restart",0,NULL,'r'},
{0,0,0,0}}:
while((opt = getopt_long(argc, argv, "if:lr", longopts, NULL)) != -1){
switch(opt){
case 'i':
case 'l':
case 'r':
printf("option: %c\n",opt);
break;
case 'f':
printf("filename: %s\n",optarg);
break;
case ':':
printf("option needs a value\n");
break;
case '?':
printf("unknown option: %c\n",optopt);
break;
}
for(; optind < argc; optind++){
printf("argument: %s\n",argv[optind]);
}
exit(0);
}