6 Stimmen

Bibliothek für Befehlszeilenverarbeitung - getopt

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X