Linux программирование в примерах
Linux программирование в примерах читать книгу онлайн
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Для использования
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 argumentn", argv[0], optopt); break; case '?': default: /* недействительная опция */ fprintf(stderr, "%s: option '-%c' is invalid: ignoredn", argv[0], optopt); break; }}Замечание о соглашениях по именованию флагов или опций: в большом количестве кода для Unix используются имена в виде
xflgnflgechoxflagno_newline-n2.3.2. GNU
getopt()Стандартная функция
getopt()getopt()argvargv[optind]argv[argc-1]--
