Книга: Разработка приложений в среде Linux. Второе издание
26.2.2. Синтаксический анализ командной строки
26.2.2. Синтаксический анализ командной строки
После того как приложение создаст poptContext
, оно может приступить к синтаксическому анализу аргументов. Функция poptGetNextContext()
выполняет синтаксический анализ аргумента.
#include <popt.h>
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 <popt.h>
char * poptGetOptArg(poptContext con);
Эта функция возвращает аргумент, заданный для последнего параметра, возвращенного функцией poptGetNextOpt()
, или возвращает значение NULL
, если ни один из аргументов не был определен.
- Списки, запятые и командные строки
- Обработка аргументов командной строки
- Глава 26 Синтаксический анализ параметров командной строки
- 26.6. Синтаксический анализ строк аргументов
- Инструмент командной строки gbak
- Инструмент командной строки gfix
- 2.5. Разработка технического задания на проведение детального анализа рынка при работе над инновационным проектом. Основ...
- 9.1. Проблема синтаксического анализа
- 2.12.2. Анализ усилительных каскадов в области малых времен
- Преобразование строки в целое: stoi( )
- Глава 5. Разработка и анализ бизнес-планов в системе Project Expert
- 4.4.3.3. План-фактный анализ продаж