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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

}

}

Обратите внимание, что значение, переданное аргументу optstring, не содержит больше ' a', ' h' или ' v'. Это означает, что соответствующие короткие опции неприемлемы. Чтобы разрешить как длинные, так и короткие опции, вам придется восстановить в switchсоответствующие caseиз первого примера.

На практике следует писать свои программы так, чтобы у каждой короткой опции была также соответствующая длинная опция. В этом случае проще всего установить в flagNULL, а в valсоответствующий единичный символ.

2.3.3.2. Длинные опции в стиле POSIX

Стандарт POSIX резервирует опцию -Wдля специфических для производителя возможностей. Поэтому по определению -Wнепереносимо между различными системами.

Если за Wв аргументе optstringследует точка с запятой (обратите внимание не двоеточие), getopt_long()рассматривает -Wlongoptтак же, как --longopt. Соответственно в предыдущем примере измените вызов следующим образом:

while ((с =

getopt_long(argc, argv, ":f:W;", longopts, NULL)) != -1) {

С этим изменением -Wallявляется тем же, что и --all, a -Wfile=myfileтем же, что --file=myfile. Использование точки с запятой позволяет программе использовать при желании -Wв качестве обычной опции. (Например, GCC использует ее как нормальную опцию, тогда как gawkиспользует ее для совместимости с POSIX.)

2.3.3 3. Сводка возвращаемых значений getopt_long()

Теперь должно быть ясно, что getopt_long()предоставляет гибкий механизм для разбора опций. В табл. 2.2 приведена сводка всех возможных возвращаемых значений функции и их значение.

Таблица 2.2. Возвращаемые значения getopt_long()

Возвращаемый код Значение
0 getopt_long()установила флаг, как указано в таблице длинных опций
1 optargуказывает на простой аргумент командной строки
'?' Недействительная опция
' ' Отсутствующий аргумент опции
' x ' Символ опции ' x '
-1 Конец опций

Наконец, мы улучшим предыдущий пример кода, показав оператор switchполностью:

int do_all, do_help, do_verbose; /* флаговые переменные */

char *myfile, *user; /* файл ввода, имя пользователя */

struct option longopts[] = {

{ "all", no_argument, &do_all, 1 },

{ "file", required_argument, NULL, 'f'},

{ "help", no_argument, &do_help, 1 },

{ "verbose", no_argument, &do_verbose, 1 },

{ "user" , optional_argument, NULL, 'u'},

{ 0, 0, 0, 0 }

};

...

while((c=getopt_long(argc, argv, ":ahvf:u::W;", longopts, NULL)) != -1) {

switch (c) {

case 'a':

do_all = 1;

break;

case 'f':

myfile = optarg;

break;

case 'h':

do_help = 1;

break;

case 'u':

if (optarg != NULL)

user = optarg;

else

user = "root";

break;

case 'v':

do_verbose = 1;

break;

case 0:

/* getopt_long() установил переменную, просто продолжить */

break;

#if 0

case 1:

/*

* Используйте этот case, если getopt_long() должна

* просмотреть все аргументы. В этом случае добавьте к

* optstring ведущий * символ '-'. Действительный код,

* если он есть, работает здесь.

*/

break;

#endif

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;

}

}

В своих программах вы можете захотеть сделать для каждого символа опции комментарии, объясняющие их значение. Однако, если вы использовали описательные имена переменных для каждого символа опции, комментарии уже не так нужны. (Сравните do_verboseи vflag.)

2.3.3.4. GNU getopt()или getopt_long()в программах пользователей

Вы можете захотеть использовать в своих программах GNU getopt()или getopt_long()и заставить их работать на не-Linux системах/ Это нормально; просто скопируйте исходные файлы из программы GNU или из CVS архива библиотеки С GNU (GLIBC) [30] См. http://sources.redhat.com — Примеч. автора . . Исходные файлы getopt.h, getopt.си getopt1.c. Они лицензированы на условиях меньшей общедоступной лицензии (Lesser General Public License) GNU, которая позволяет включать библиотечные функции даже в патентованные программы. Вы должны включить в свою программу копию файла COPYING.LIBнаряду с файлами getopt.h, getopt.си getopt1.с.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x