Арнольд Роббинс - Linux программирование в примерах

Здесь есть возможность читать онлайн «Арнольд Роббинс - Linux программирование в примерах» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2005, ISBN: 2005, Издательство: Кудиц-Образ, Жанр: Программирование, ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Linux программирование в примерах: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Linux программирование в примерах»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.

Linux программирование в примерах — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Linux программирование в примерах», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

getopt()возвращает ' :'. Если первый символ optstringне является двоеточием, getopt()возвращает ' ?', делая этот случай неотличимым от случая неверной опции.

Таким образом, помещение в качестве первого символа optstringдвоеточия является хорошей мыслью, поскольку это позволяет различать «неверную опцию» и «отсутствующий аргумент опции». Расплатой за это является то, что getopt()в этом случае также не предпринимает никаких действий, заставляя вас выводить собственные сообщения об ошибках. Вот предыдущий пример, на этот раз с обработкой ошибок:

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 используются имена в виде xflgдля любого данного символа опции x (например, nflgв echoV7; обычным является также xflag). Это может быть замечательным для авторе программы, который без проверки документации знает, что означает опция x . Но это не подходит для кого-то еще, кто пытается прочесть код и не знает наизусть значений всех символов опций. Гораздо лучше использовать имена, передающие смысл опции, как no_newlineдля опции -necho.

2.3.2. GNU getopt()и порядок опций

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

Вы можете изменить поведение по умолчанию, использовав в optstringспециальный первый символ следующим образом:

optstring[0] == '+'

GNU getopt()ведет себя, как стандартная getopt(); она возвращает опции по мере их обнаружения, останавливаясь на первом аргументе, не являющемся опцией. Это работает также в том случае, если в окружении присутствует строка POSIXLY_CORRECT.

optstring[0] == '-'

GNU getopt()возвращает каждый аргумент командной строки независимо от того, представляет он аргумент или нет. В этом случае для каждого такого аргумента функция возвращает целое 1, а указатель на соответствующую строку помещает в optarg.

Как и для стандартной getopt(), если первым символом optstringявляется ' :', GNU getopt()различает «неверную опцию» и «отсутствующий аргумент опции», возвращая соответственно ' ?' или ' :'. Символ ' :' в optstringможет быть вторым символом, если первым символом является ' +' или ' -'.

Наконец, если за символом опции в optstringследуют два двоеточия, эта опция может иметь необязательный аргумент. (Быстро повторите это три раза!) Такой аргумент считается присутствующим, если он находится в том же элементе argv, что и сама опция, и отсутствующим в противном случае. В случае отсутствия аргумента GNU getopt()возвращает символ опции, а в optargзаписывает NULL. Например, пусть имеем:

while ((с = getopt(argc, argv, "ab::")) != -1)

...

для -bYANKEES, возвращаемое значение будет ' b', a optargуказывает на « YANKEES», тогда как для -bили ' -b YANKEES' возвращаемое значение будет все то же ' b', но в optargбудет помещен NULL. В последнем случае « YANKEES» представляет отдельный аргумент командной строки.

2.3.3. Длинные опции

Функция getopt_long()осуществляет разбор длинных опций в описанном ранее виде. Дополнительная процедура getopt_long_only()работает идентичным образом, но она используется для программ, в которых все опции являются длинными и начинаются с единичного символа ' -'. В остальных случаях обе функции работают точно так же, как более простая функция GNU getopt(). (Для краткости, везде, где мы говорим « getopt_long()», можно было бы сказать « getopt_long()и getopt_long_only()».) Вот объявления функций из справки getopt(3) GNU/Linux:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Linux программирование в примерах»

Представляем Вашему вниманию похожие книги на «Linux программирование в примерах» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Linux программирование в примерах»

Обсуждение, отзывы о книге «Linux программирование в примерах» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x