Разработка приложений в среде Linux - [193]
>poptGetNextContext()
выполняет синтаксический анализ аргумента.>#include
>int poptGetNextOpt(poptContext con);
Принимая содержимое в качестве своего единственного аргумента, эта функция анализирует синтаксис следующего обнаруженного аргумента командной строки. После того как следующий аргумент будет обнаружен в таблице параметров, функция заполняет объект, на который указывает указатель >arg
элемента таблицы параметров, если только он не равен >NULL
. Если элемент >val
для параметра имеет ненулевое значение, функция возвращает это значение. В противном случае функция >poptGetNextOpt()
переходит к следующему аргументу.
Функция >poptGetNextOpt()
возвращает значение >-1
, если был проанализирован синтаксис последнего аргумента, и другие отрицательные значения в случае возникновения ошибки. Поэтому лучше всего присваивать элементам >val
в таблице параметров значения больше нуля.
Если все параметры командной строки обрабатываются через указатели >arg
, то синтаксический анализ командной строки сокращается до следующей строки кода:
>rc = poptGetNextOpt(poptcon);
Тем не менее, для многих приложений требуется более сложный синтаксический анализ командной строки, нежели этот, и применяется показанная ниже структура.
>while ((rc = poptGetNextOpt(poptcon)) > 0) {
> switch (rc) {
> /* здесь обрабатываются специфические аргументы */
> }
>}
Во время обработки возвращенных параметров приложению необходимо знать значение каждого аргумента, который был определен после параметра. Это можно сделать двумя способами. Один из них заключается в том, чтобы >popt
присваивала переменной значение параметра из элементов arg таблицы параметров. Другой способ предусматривает применение функции >poptGetOptArg()
.
>#include
>char * poptGetOptArg(poptContext con);
Эта функция возвращает аргумент, заданный для последнего параметра, возвращенного функцией >poptGetNextOpt()
, или возвращает значение >NULL
, если ни один из аргументов не был определен.
26.2.3. Остаточные аргументы
Многие приложения принимают произвольное количество аргументов командной строки, например, список имен файлов. Когда >popt
встречает аргумент, перед которым отсутствует дефис >-
, она считает его таким аргументом и добавляет его в список остаточных аргументов. Доступ к этим аргументам в приложениях можно реализовать с помощью описанных далее трех функций.
>char * poptGetArg(poptContext con);
Эта функция возвращает следующий остаточный аргумент и помечает его как обработанный.
>char * poptPeekArg(poptContext con);
Эта функция возвращает следующий аргумент, не помечая его как обработанный. Таким образом, приложение может продолжить рассмотрение списка аргументов, не модифицируя список.
>char ** poptGetArgs(poptContext con);
Эта функция возвращает все остаточные аргументы в виде >argv
. Последний элемент в возвращаемом массиве указывает на >NULL
, подтверждая конец аргументов.
26.2.4. Автоматические справочные сообщения
Одним из преимуществ использования библиотеки >popt
является ее способность автоматически генерировать справочные сообщения и сообщения об использовании. В справочных сообщениях указывается каждый параметр командной строки и приводится его подробное описание, а в сообщениях об использовании приводится краткий перечень доступных параметров без какого-либо сопроводительного текста. Для создания каждого типа сообщения в библиотеке >popt
предусмотрена отдельная функция.
>#include
>void poptPrintHelp(poptContext con, FILE * f, int flags);
>void poptPrintUsage(poptContext con, FILE * f, int flags);
Обе эти функции ведут себя практически одинаково, записывая соответствующий тип сообщения в файл >f
. Аргумент >flags
на данный момент не используется ни одной из этих функций, и должен быть равен нулю для совместимости с будущими версиями библиотеки >popt
.
Поскольку за справочное сообщение отвечает параметр >--help
, а за сообщение об использовании — параметр >--usage
, библиотека >popt
предлагает простой способ добавления этих двух параметров в программу. Чтобы добавить эти параметры в таблицу параметров, можно использовать макрос >POPT_AUTOHELP
[185], который выводит соответствующие сообщения в >STDOUT
и закрывается после возвращения кода >0
[186]. В следующем примере показана таблица параметров в файле >grep.с
; мы должны добавить одну строку в таблицу параметров для grep, чтобы активизировать автоматическое генерирование справочных сообщений.
> 95: struct poptOption optionsTable[] = {
> 96: { "extended-regexp", 'E', POPT_ARG_VAL,
> 97: &mode, MODE_EXTENDED,
> 98: "шаблоном для соответствия является расширенное регулярное "
> 99: "выражение" },
>100: { "fixed-strings", 'F', POPT_ARG_VAL,
>101: &mode, MODE_FIXED,
>102: "шаблоном для соответствия является базовая строка, (не "
>103: "регулярное выражение)", NULL },
>104: { "basic-regexp", 'G', POPT_ARG_VAL,
>105: &mode, MODE_REGEXP,
>106: "шаблоном для соответствия является базовое регулярное выражение" },
>107: { "ignore-case", 'i', POPT_ARG_NONE, &ignoreCase, 0,
>108: "выполнять поиск, чувствительный к регистру", NULL },
Одно из немногих изданий на русском языке, которое посвящено старейшей глобальной компьютерной сети "Fidonet". Сатирический справочник о жизни и смерти самого древнего сетевого сообщества, которое до сих пор существует среди нас.
В пособии излагаются основные тенденции развития организационного обеспечения безопасности информационных систем, а также подходы к анализу информационной инфраструктуры организационных систем и решению задач обеспечения безопасности компьютерных систем.Для студентов по направлению подготовки 230400 – Информационные системы и технологии (квалификация «бакалавр»).
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями shell.Для программистов-пользователей операционной системы UNIX.
Книга адресована программистам, работающим в самых разнообразных ОС UNIX. Авторы предлагают шире взглянуть на возможности параллельной организации вычислительного процесса в традиционном программировании. Особый акцент делается на потоках (threads), а именно на тех возможностях и сложностях, которые были привнесены в технику параллельных вычислений этой относительно новой парадигмой программирования. На примерах реальных кодов показываются приемы и преимущества параллельной организации вычислительного процесса.
Применение виртуальных машин дает различным категориям пользователей — от начинающих до IT-специалистов — множество преимуществ. Это и повышенная безопасность работы, и простота развертывания новых платформ, и снижение стоимости владения. И потому не случайно сегодня виртуальные машины переживают второе рождение.В книге рассмотрены три наиболее популярных на сегодняшний день инструмента, предназначенных для создания виртуальных машин и управления ими: Virtual PC 2004 компании Microsoft, VMware Workstation от компании VMware и относительно «свежий» продукт — Parallels Workstation, созданный в компании Parallels.
Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. В ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows.