Майкл Джонсон - Разработка приложений в среде Linux. Второе издание

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

Разработка приложений в среде Linux. Второе издание: краткое содержание, описание и аннотация

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

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет собой отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из других операционных систем. Подробно рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование свободно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Изобилие хорошо документированных примеров кода помогает лучше усвоить особенности программирования в Linux.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.

Разработка приложений в среде Linux. Второе издание — читать онлайн бесплатно полную книгу (весь текст) целиком

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

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

Интервал:

Закладка:

Сделать

89: strncpy(&request.ut_line[0], line, UT_LINESIZE);

90: return getutline(&request);

91: }

92:

93: request.ut_type = INIT_PROCESS;

94: strncpy(&request.ut_id[0], id, 4);

95: return getutid(&request);

96: }

97:

98: void print_file(char * name, char * id, char * line) {

99: struct utmp * u;

100:

101: if (utmpname(name)) {

102: fprintf (stderr, "сбой при открытии базы данных utmp %s\n", name);

103: return;

104: }

105: setutent();

106: printf("%s:\n====================\n", name);

107: while ((u = get_next_line(id, line))) {

108: print_utmp_entry(u);

109: /* POSIX требует очистки статических данных перед

110: * повторным вызовом getutline или getutid

111: */

112: memset(u, 0, sizeof(struct utmp));

113: }

114: endutent();

115: }

116:

117: int main(int argc, const char **argv) {

118: char * id = NULL, *line = NULL;

119: int show_utmp = 1, show_wtmp = 0;

120: int c;

121: poptContext optCon;

122: struct poptOption optionsTable[] = {

123: {"utmp", 'u', POPT_ARG_NONE|POPT_ARGFLAG_XOR,

124: &show_utmp, 0,

125: "переключить просмотр содержимого файла utmp", NULL},

126: { "wtmp", 'w', POPT_ARG_NONE | POPT_ARGFLAG_XOR,

127: &show_wtmp, 0,

128: "переключить просмотр содержимого файла wtmp", NULL},

129: {"id", 'i', POPT_ARG_STRING, &id, 0,

130: "показать записи процесса для заданного идентификатора inittab",

131: "" },

132: {"line", 'l', POPT_ARG_STRING, &line, 0,

133: "показать записи процесса для заданной строки устройства",

134: "" },

135: POPT_AUTOHELP

136: POPT_TABLEEND

137: };

138:

139: optCon = poptGetContext("utmp", argc, argv, optionsTable, 0);

140: if ((c = poptGetNextOpt(optCon)) < -1) {

141: fprintf(stderr, "%s:%s\n",

142: poptBadOption(optCon, POPT_BADOPTION_NOALIAS),

143: poptStrerror(c));

144: return 1;

145: }

146: poptFreeContext(optCon);

147:

148: if (id && line)

149: fprintf(stderr, "Невозможно выбирать сразу по идентификатору и строке,"

150: "выбор по строке\n");

151:

152: if (show_utmp)

153: print_file(_PATH_UTMP, id, line);

154: if (show_utmp && show_wtmp)

155: printf("\n\n\n");

156: if (show_wtmp)

157: print_file(_PATH_WTMP, id, line);

158:

159: return 0;

160: }

16.2. Обзор termios

Все манипуляции tty осуществляются с помощью одной структуры, struct termios, а также нескольких функций, определенных в заголовочном файле . Из этих функций широко применяются только шесть. Когда не нужно устанавливать скорость передачи данных по линии, используются только две наиболее важных функции — tcgetattr()и tcsetattr().

#include

struct termios {

tcflag_t c_iflag; /* флаги режима ввода */

tcflag_t c_oflag; /* флаги режима вывода */

tcflag_t c_cflag; /* флаги управляющего режима */

tcflag_t c_lflag; /* флаги локального режима */

cc_t c_line; /* дисциплина линии связи */

cc_t c_cc[NCCS]; /* управляющие символы */

};

int tcgetattr(int fd, struct termios * tp);

int tcsetattr(int fd, int oact, struct termios * tp);

Почти в каждом случае программы должны использовать tcgetattr()для получения текущих установок устройства, модифицировать эти установки, а затем применять tcsetattr()для активизации модифицированных установок. Многие программы также сохраняют копии оригинальных установок и восстанавливают их перед завершением. В общем случае, следует модифицировать только интересующие вас установки; изменение других установок может усложнить работу пользователей с необычными системными конфигурациями (или сбоями в вашем коде).

Вызов tcsetattr()может не принять на обработку выбранные вами установки; разрешено игнорировать произвольные установки. Если оборудование просто не поддерживает установку, tcsetattr()игнорирует ее, а не возвращает ошибку. Если вам небезразлично воздействие, оказываемое установкой, следует использовать tcgetattr()после tcsetattr()и проверить, оказало ли воздействие внесенное вами изменение.

Для получения установок устройства tty необходимо открыть устройство и передать файловый дескриптор tcgetattr(). Это вызывает проблемы с некоторыми устройствами tty; некоторые обычно можно открыть лишь один раз с целью предотвращения конфликта устройств. К счастью, передача флага O_NONBLOCKв open()вызывает его немедленное открытие и предотвращает блокирование любых операций. Однако все равно можно предпочесть блокирование read(); в таком случае используйте fcntl()для отключения режима O_NONBLOCKперед тем, как появится возможность читать или записывать в него.

fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK);

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

Интервал:

Закладка:

Сделать

Похожие книги на «Разработка приложений в среде Linux. Второе издание»

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


Геше Джампа Тинлей - Лоджонг (второе издание)
Геше Джампа Тинлей
Алексей Филатов - Люди «А». Второе издание
Алексей Филатов
Отзывы о книге «Разработка приложений в среде Linux. Второе издание»

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

x