#include <unistd.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
int ch;
while ((ch = getopt(argc, argv, "ab:")) != -1)
{
printf("optind[%d] optarg[%s] ", optind, optarg);
switch (ch)
{
case 'a':
printf("a オプションあり\n");
break;
case 'b':
printf("b オプションあり\n");
break;
default:
printf("[%c] オプション指定\n", ch);
break;
}
}
return 0;
}
引数を試すと以下のようになります(a.out は実行モジュールです)。
> ./a.out
> ./a.out -a
optind[2] optarg[(null)] a オプションあり
> ./a.out -a -b
optind[2] optarg[(null)] a オプションあり
a.out: option requires an argument -- b
optind[3] optarg[(null)] [?] オプション指定
> ./a.out -a -b ccccc
optind[2] optarg[(null)] a オプションあり
optind[4] optarg[ccccc] b オプションあり
> ./a.out -a -b ccccc -d
optind[2] optarg[(null)] a オプションあり
optind[4] optarg[ccccc] b オプションあり
a.out: illegal option -- d
optind[5] optarg[ccccc] [?] オプション指定