誰かが getopt 関数を手伝ってくれますか?
メインで次のことを行うと:
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;
}
}
古い libc バージョンを使用する rhel3 でこのコードを実行しています。どちらが正確かはわかりません。
ここでの問題は、argv2 で 2 回目に getopt が機能しないことです。しかし、最初の getopt 呼び出しを argv1 でコメントアウトすると、機能します。
誰かが私がここで間違っていることを教えてもらえますか?