一、问题
在一个while循环中使用getopt解析命令,发现第一次可以正常解析,第二次就不解析了。
#include <stdio.h>
#include <unistd.h>
int main()
{
int argc = 2;
char *argv[10];
int oc;
argv[0] = "help";
argv[1] = "-l";
while((oc = getopt(argc,argv,"l")) != -1)
{
switch(oc)
{
case 'l':
printf("help long option\n");
break;
default:
printf("error option\n");
break;
}
}
printf("%d\n",optind);
argc = 2;
argv[0] = "help";
argv[1] = "-s";
optind = 0; //不加的话无法重复调用
while((oc = getopt(argc,argv,"l")) != -1)
{
switch(oc)
{
case 'l':
printf("help long option\n");
break;
case '?':
printf("help error option\n");
break;
default:
printf("error option\n");
break;
}
}
return 0;
}
二、
加一句即可正常。不知道为什么getopt要这么设置。
optind = 0; //不加的话无法重复调用