Linux программирование в примерах - Роббинс Арнольд
Тут можно читать бесплатно Linux программирование в примерах - Роббинс Арнольд. Жанр: Интернет издательство , год .
Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте knigi-for.me (knigi for me) или прочесть краткое содержание, предисловие (аннотацию),
описание и ознакомиться с отзывами (комментариями) о произведении.
Для использования
getopt()while-1optarg-а-bint ос; /* символ опции */char *b_opt_arg;while ((ос = getopt(argc, argv, "ab:")) != -1) { switch (oc) { case 'a': /* обработка -а, установить соответствующий флаг */ break; case 'b': /* обработка -b, получить значение аргумента из optarg */ b_opt_arg = optarg; break; case ':': ... /* обработка ошибок, см. текст */ case '?': default: ... /* обработка ошибок, см. текст */ }}В ходе работы
getopt()char *optargАргумент для опции, если она принимает аргумент.
int optindТекущий индекс в
argvloopargv[optind]argv[argc-1]argv [argc] ==NULLint opterrКогда эта переменная не равна нулю (значение по умолчанию),
getopt()int optoptКогда находится недействительный символ опции,
getopt()?:optoptЛюди есть люди, программы неизбежно будут иногда вызываться неправильно либо с недействительной опцией, либо с отсутствующим аргументом опции. Обычно в таких случаях
getopt()?Во-первых, записав 0 в
opterrgetopt()getopt()Во-вторых, если первый символ в
optstringgetopt()Неверная опция
getopt()?optoptОтсутствует аргумент опции
getopt():optstringgetopt()?Таким образом, помещение в качестве первого символа
optstringgetopt()int ос; /* символ опции */char *b_opt_arg;while ((ос = getopt(argc, argv, ":ab:")) != -1) { switch (oc) { case 'a': /* обработка -a, установка соответствующего флага */ break; case 'b': /* обработка -b, получение значения аргумента из optarg */ b_opt_arg = optarg; break; case ':': /* отсутствует аргумент опции */ fprintf(stderr, "%s: option '-%c' requires an argument\n", argv[0], optopt); break; case '?': default: /* недействительная опция */ fprintf(stderr, "%s: option '-%c' is invalid: ignored\n", argv[0], optopt); break; }}Замечание о соглашениях по именованию флагов или опций: в большом количестве кода для Unix используются имена в виде
xflgnflgechoxflagno_newline-n2.3.2. GNU
getopt()Стандартная функция
getopt()getopt()argvargv[optind]argv[argc-1]--