Тут можно читать онлайн книгу Роббинс Арнольд - Linux программирование в примерах - бесплатно полную версию (целиком). Жанр книги: Программирование. Вы можете прочесть полную версию (весь текст) онлайн без регистрации и смс на сайте Lib-King.Ru (Либ-Кинг) или прочитать краткое содержание, аннотацию (предисловие), описание и ознакомиться с отзывами (комментариями) о произведении.
Linux программирование в примерах - описание и краткое содержание, автор Роббинс Арнольд, читать бесплатно онлайн на сайте электронной библиотеки Lib-King.Ru.
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Linux программирование в примерах - читать книгу онлайн бесплатно, автор Роббинс Арнольд
Наконец, мы улучшим предыдущий пример кода, показав оператор
switchint 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_verbosevflag2.3.3.4. GNU
getopt()getopt_long()Вы можете захотеть использовать в своих программах GNU
getopt()getopt_long()getopt.hgetopt.сgetopt1.cCOPYING.LIBgetopt.hgetopt.сgetopt1.сВключите исходные файлы в свой дистрибутив и откомпилируйте их с другими исходными файлами. В исходном коде, вызывающем
getopt_long()#include <getopt.h>#include "getopt.h"-IВы можете поинтересоваться: «Вот так, я уже использую GNU/Linux. Почему я должен включать
getopt_long()$ <b>uname -а</b> /* Показать имя и тип системы */Linux example 2.4.18-14 #1 Wed Sep 4 13:35:50 EDT 2002 i686 i686 i386 GNU/Linux$ <b>ls -l getopt.о getopt1.о</b> /* Показать размеры файлов */-rw-r--r-- 1 arnold devel 9836 Mar 24 13:55 getopt.о-rw-r--r-- 1 arnold devel 10324 Mar 24 13:55 getopt1.о$ <b>size getopt.о getopt1.о</b> /* Показать включенные в исполняемыймодуль размеры */text data bss dec hex filename0 0 0 0 0 getopt.о0 0 0 0 0 getopt1.оКоманда
size