getopt()

Разобрать опции, переданные из командной строки

Прототип:

#include <unistd.h>
int getopt( int argc,
char * const argv[],
const char *optstring );
extern char *optarg;
extern int optind, opterr, optopt;

Аргументы:

argc
Число аргументов, переданных в функцию main().
argv
Массив аргументов, переданных в функцию main().
optstring
Строка символов, идентифицируемых в качестве коротких опций. Если за символом следует символ ":", опция имеет аргумент. Допустимые символы лишь включают буквы и цифры.

Библиотека:

libc

Описание:

Функция getopt() представляет собой анализатор командной строки, который может быть использован приложениями, которые следуют "Рекомендациям по синтаксису утилит", описанным ниже.

Глобальная переменная optind хранит индекс следующего элемента массива argv[], который будет обработан. Система инициализирует optind значением 1 при загрузке программы, и getopt() обновляет ее по завершению работы с каждым элементом argv[]. Сбросьте optind в 1 если вам требуется использовать getopt() для обработки дополнительных наборов аргументов.

Функция getopt() возвращает следующий символ опции из argv, который совпадает с символом в optstring, если такой существует. Если у опции есть аргумент, getopt() записывает в optarg указатель на аргумент опции:

  1. Если символ опции является последним в строке, на которую указывает элемент argv, то optarg будет содержать следующий элемент argv, а значение optind увеличится на 2.

  2. В противном случае optarg будет указывать на строку, за которой будет следовать символ опции в argv, и optind увеличится на 1.

Функция getopt() возвращает -1 и не изменяет optind, если:

Функция возвращает -1 после инкремента optind, если:

Если функция getopt() встречает символ опции, который отсутствует в optstring, она возвращает символ "?". Если функция getopt() не обнаруживает аргумент у опции, то она возвращает:

и записывает в optopt символ опции, который вызвал ошибку.

Функция getopt() выводит диагностические сообщения в stderr до тех пор, пока opterr равен 0, или первым символом optstring является ':'.

Рекомендации по синтаксису утилит

Функция getopt() может быть использована приложениями, которые следуют следующим рекомендациям:

Возвращаемое значение:

Одно из следующих:

Примеры:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main( int argc, char* argv[] )
{
int c, errflag = 0;
while ( (c = getopt( argc, argv, "abt:" )) != -1 )
{
switch( c )
{
case 'a': printf( "apples\n" );
break;
case 'b': printf( "bananas\n" );
break;
case 't': printf( "tree = %s\n", optarg );
break;
case '?': ++errflag;
break;
}
}
return (EXIT_SUCCESS);
}

Классификация:

POSIX 1003.1

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Нет

Тематические ссылки:

getsubopt(), main(), stderr

Рекомендации 3, 4, 5, 6, 7, 9 и 10 в томе «Базовые определения» IEEE Std.1003.1-2001, Раздел 12.2, Рекомендации по синтаксису утилит.




Предыдущий раздел: Описание API системной библиотеки