Linux программирование в примерах
Linux программирование в примерах читать книгу онлайн
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Вы можете изменить поведение по умолчанию, использовав в
optstringoptstring[0] == '+'GNU
getopt()getopt()POSIXLY_CORRECToptstring[0] == '-'GNU
getopt()optargКак и для стандартной
getopt()optstring:getopt()?::optstring+-Наконец, если за символом опции в
optstringargvgetopt()optargwhile ((с = getopt(argc, argv, "ab::")) != -1)...для
-bYANKEESboptargYANKEES-b-b YANKEESboptargYANKEES2.3.3. Длинные опции
Функция
getopt_long()getopt_long_only()-getopt()getopt_long()getopt_long()getopt_long_only()#include <getopt.h> /* GLIBC */int getopt_long(int argc, char *const argv[], const char *optstring, const struct option *longopts, int *longindex);int getopt_long_only(int argc, char *const argv[], const char *optstring, const struct option *longopts, int *longindex);Первые три аргумента те же, что и в
getopt()struct optionlongindexlongopts2.3.3.1. Таблица длинных опций
Длинные опции описываются с помощью массива структур
struct optionstruct option<getopt.h>struct option { const char *name; int has_arg; int *flag; int val;};Элементы структуры следующие:
const char *nameЭто имя опции без предшествующих черточек, например, «
helpverboseint has_argПеременная описывает, имеет ли длинная опция аргумент, и если да, какого вида этот аргумент. Значение должно быть одно из представленных в табл. 2.1. Макроподстановки являются некоторыми символическими именами для числовых значений, приведенных в таблице. Хотя числовые значения тоже работают, макроподстановки гораздо легче читать, и вы должны их использовать вместо соответствующих чисел в любом коде, который пишете.
int *flagЕсли этот указатель равен NULL,
getopt_long()valvalgetopt_long()flagint valЕсли длинная опция обнаружена, это возвращаемое значение или значение для загрузки в
*flagflagflagvalflagvaloptstring
