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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

44: }

45:

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

47: pam_handle_t * pamh;

48: struct passwd * pw;

49: char * username=NULL, * service=NULL;

50: int account = 1, session = 0;

51: int c;

52: poptContext optCon;

53: struct poptOption optionsTable[] = {

54: { "username", 'u', POPT_ARG_STRING, &username, 0,

55: "Имя пользователя для аутентификации", "<���имя_пользователя>" },

56: { "service", 'S', РОPT_ARG_STRING, &service, 0,

57: "Имя службы для инициализации как (pamsample)",

58: "<���служба>" },

59: { "account", 'a', POPT_ARG_NONE|POPT_ARGFLAG_XOR,

60: &account, 0,

61: "включение/выключение управления учетными записями (включено)", "" },

62: { "session", 's', POPT_ARG_NONE|POPT_ARGFLAG_XOR,

63: &session, 0,

64: "включение/выключение запуска сеанса (выключено)", "" },

65: POPT_AUTOHELP

66: POPT_TABLEEND

67: };

68:

69: optCon = poptGetContext("pamexample", argc, argv,

70: optionsTable, 0);

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

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

73: poptBadOption(optCon, POPT_BADOPTION_NOALIAS),

74: poptStrerror(c));

75: return 1;

76: }

77: poptFreeContext(optCon);

78:

79: if (!service) {

80: /* Обратите внимание, что обычное приложение не должно предоставлять

81: * этот параметр пользователю; он присутствует здесь, чтобы можно было

82: * проверить это приложение, не производя изменений в системе,

83: * требующих доступа root.

84: */

85: service = "pamexample";

86: }

87:

88: if (!username) {

89: /* по умолчанию для текущего пользователя */

90: if (!(pw = getpwuid (getuid())) ) {

91: fprintf(stderr, "Имя пользователя не существует");

92: exit(1);

93: }

94: username = strdup(pw->pw_name);

95: }

96:

97: с = pam_start(service, username, &my_conv, &pamh);

98: check_success(pamh, c);

99:

100: с = pam_authenticate(pamh, 0);

101: check_success(pamh, c);

102:

103: if (account) {

104: /* если аутентификация не была закончена, управление

105: * учетной записью не определено

106: */

107: с = pam_acct_mgmt(pamh, 0);

108: check_success(pamh, с);

109: }

110:

111: if (session) {

112: /* В случае необходимости мы могли бы организовывать здесь ветвление */

113: с = pam_open_session(pamh, 0);

114: check_success(pamh, с);

115:

116: /* Обратите внимание, что здесь не устанавливается uid, gid

117: или дополнительные группы */

118: с = pam_setcred(pamh, 0);

119:

120: /* В случае необходимости мы могли бы закрыть здесь полномочия */

121:

122: /* Вызов оболочки, которая была "аутентифицирована" */

123: printf("Запуск оболочки...\n");

124: system("exec bash -");

125:

126: /* Здесь мы могли бы использовать wait4(), если бы организовывали

127: ветвление вместо вызова system() */

128: с = pam_close_session(pamh, 0);

129: check_success(pamh, с);

130: }

131:

132: /* Реальные приложения могли бы сообщать о сбое вместо

133: * выхода, что мы и делали в check_success на каждой стадии,

134: * поэтому в таких случаях с может иметь значения, отличные

135: * от PAM_SUCCESS.

136: */

137: с = pam_end(pamh, с);

138: check_success(pamh, с);

139:

140: return 0;

141: }

Приложения

Приложение A

Заголовочные файлы

В этом приложении показаны все локальные заголовочные файлы для исходного кода, рассмотренного в книге.

1: /* libhello.h */

2:

3: #ifndef LIBHELLO_H_

4: #define LIBHELLO_H_

5:

6: void print_hello(void);

7:

8: #endif /* LIBHELLO_H_ */

1: /* ptypair.h */

2:

3: #ifndef _PTYPAIR_H

4: #define _PTYPAIR_H

5: int get_master_pty(char **name);

6: int get_slave_pty(char *name);

7: #endif /* _PTYPAIR_H */

1: /* sockutil.h */

2:

3: void die(char * message);

4: void copyData(int from, int to);

5: #ifndef CMSG_DATA

6: #define CMSG_DATA (cmsg) ((cmsg)->cmsg_data)

7: #endif

Приложение Б

Исходный код ladsh

1: /* ladsh4.c */

2:

3: #define _GNU_SOURCE

4:

5: #include

6: #include

7: #include

8: #include

9: #include

10: #include

11: #include

12: #include

13: #include

14: #include

15: #include

16:

17: #define MAX_COMMAND_LEN 250 /* максимальная длина одной

18: командной строки */

19: #define JOB_STATUS_FORMAT "[%d] %-22s %.40s\n"

20:

21: struct jobSet {

22: struct job * head; /* заголовок списка выполняющихся заданий */

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

Интервал:

Закладка:

Сделать

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

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


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

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

x