クラスのスケルトン コードのセクションを理解しようとしています。使用目的は次のとおりです。
./a.out -d -n Foo -i Bar
スケルトン コードは正常に動作しますが、使用getopt()
したことがなく、なぜそれが正しく動作するのか理解できません (割り当てとは関係がないことを理解しています。意味を理解したいだけです)。whileループを更新/終了するのはどうですか? ポインターのインクリメントや、ループで渡された引数がまったく変更されていません。
char *optString = "-d-n:-i:";
int opt = getopt(argc, argv, optString);
while (opt != -1) {
switch(opt) {
case 'd':
debug = 1;
break;
case 'n':
nameserver_flag = 1;
nameserver = optarg;
break;
case 'i':
hostname = optarg;
break;
case '?':
usage();
exit(1);
default:
usage();
exit(1);
}
opt = getopt(argc, argv, optString);
}