Kann mir jemand mit der Funktion getopt helfen?
Wenn ich in main folgendes tue:
char *argv1[] = {"testexec","-?"};
char *argv2[] = {"testexec","-m","arg1"};
int cOption;
/* test for -? */
setvbuf(stdout,(char*)NULL,_IONBF,0);
printf("\n argv1 ");
while (( cOption = getopt (2, argv1, "m:t:n:fs?")) != -1) {
switch(cOption){
case 'm':
printf("\n -m Arg : %s \n",optarg);
break;
case '?':
printf("\n -? Arg ");
break;
case 'n':
printf("\n -n Arg : %s \n",optarg);
break;
}
}
printf("\n argv2 ");
while (( cOption = getopt (3, argv2, "m:t:n:fs?")) != -1) {
switch(cOption){
case 'm':
printf("\n -m Arg : %s \n",optarg);
break;
case '?':
printf("\n -? Arg : %s \n",optarg);
break;
case 'n':
printf("\n -n Arg : %s \n",optarg);
break;
}
}
Ich führe diesen Code auf rhel3 aus, der eine alte libc-Version verwendet. Ich weiß nicht, welche, um genau zu sein.
Das Problem ist nun, dass getopt beim zweiten Mal mit argv2 nicht mehr funktioniert. Aber wenn ich den ersten getopt-Aufruf mit argv1 auskommentiere, funktioniert es.
Kann mir jemand sagen, was ich hier falsch mache?