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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Функция getutline()возвращает следующую строку с ut_id, установленным в LOGIN_PROCESSили USER_PROCESS. Эти процессы тоже имеют значение ut_line, соответствующее значению ut_lineв struct utmp, которая передается в getutline(). Как и в случае getutid(), необходимо удалить данные, возвращаемые getutline(), из struct utmpперед его повторным вызовом; в противном случае POSIX разрешает возвращать ту же строку, что и предыдущий вызов. Если соответствующих строк нет, возвращается NULL.

Функция pututline()модифицирует (или по необходимости добавляет) запись базы данных, соответствующую элементу ut_lineаргумента struct utmp. Она делает это только в том случае, если у процесса есть полномочия на модификацию базы данных. Если модификация базы данных прошла успешно, она возвращает struct utmp, который соответствует данным, записанным в базу. В ином случае возвращается NULL. Функция pututline()не применима к базе данных wtmp. Для модификации базы данных wtmp используйте updwtmp()или logwtmp().

Функция setutent()перемещает внутренний указатель базы данных в начало.

Функция endutent()закрывает базу данных. Это закрывает файловый дескриптор и освобождает ассоциированные данные. Вызывайте endutent()как перед использованием utmpname()для доступа к другому файлу utmp, так и после завершения доступа к данным utmp.

Наиболее надежным способом модификации базы данных wtmp являются две функции, определенные BSD и доступные как часть glibc.

Функция updwtmp()принимает файловое имя базы данных wtmp (обычно _PATH_WTMP) и заполненную структуру struct utmp, пытаясь добавить элемент к файлу wtmp. Эта функция не сообщает об ошибках.

Функция logwtmp()является удобной функцией, заполняющей struct utmpи вызывающей updwtmp()для нее. Аргумент lineкопируется в ut_line, name— в ut_user, host— в ut_host, ut_tvзаполняется текущим показанием времени, a ut_pid— текущим идентификатором процесса. Как и updwtmp(), эта функция не сообщает об ошибках.

В программе utmp демонстрируются некоторые методы чтения баз данных utmp и wtmp.

1: /* utmp.с */

2:

3: #include

4: #include

5: #include

6: #include

7: #include

8: #include

9: #include

10: #include

11: #include

12: #include

13: #include

14:

15: void print_utmp_entry(struct utmp * u) {

16: struct tm *tp;

17: char * type;

18: char addrtext[INET6_ADDRSTRLEN];

19:

20: switch (u->ut_type) {

21: case EMPTY: type = "EMPTY"; break;

22: case RUN_LVL: type = "RUN_LVL"; break;

23: case BOOT_TIME: type = "BOOT_TIME"; break;

24: case NEW_TIME: type = "NEW_TIME"; break;

25: case OLD_TIME: type = "OLD_TIME"; break;

26: case INIT_PROCESS: type = "INIT_PROCESS"; break;

27: case LOGIN_PROCESS: type = "LOGIN_PROCESS"; break;

28: case USER_PROCESS: type = "USER_PROCESS"; break;

29: case DEAD_PROCESS: type = "DEAD_PROCESS"; break;

30: case ACCOUNTING: type = "ACCOUNTING "; break;

31: }

32: printf("%-13s:", type);

33: switch (u->ut_type) {

34: case LOGIN_PROCESS:

35: case USER_PROCESS:

36: case DEAD_PROCESS:

37: printf(" line: %s", u->ut_line);

38: /* fall through */

39: case INIT_PROCESS:

40: printf("\n pid: %6d id: %4.4s", u->ut_pid, u->ut_id);

41: }

42: printf ("\n");

43: tp = gmtime(&u->ut_tv.tv_sec);

44: printf("time: %24.24s.%lu\n", asctime(tp), u->ut_tv.tv_usec);

45: switch (u->ut_type) {

46: case USER_PROCESS:

47: case LOGIN_PROCESS:

48: case RUN_LVL:

49: case BOOT_TIME:

50: printf("пользователь: %s\n", u->ut_user);

51: }

52: if (u->ut_type == USER_PROCESS) {

53: if (u->ut_session)

54: printf(" сеанс: %lu\n", u->ut_session);

55: if (u->ut_host)

56: printf (" хост: %s\n", u->ut_host);

57: if (u->ut_addr_v6[0]) {

58: if (!(u->ut_addr_v6[1] |

59: u->ut_addr_v6[2] |

60: u->ut_addr_v6[3])) {

61: /* заполнение только первой группы означает адрес IPV4 */

62: inet_ntop(AF_INET, u->ut_addr_v6,

63: addrtext, sizeof(addrtext));

64: printf(" IPV4: %s\n", addrtext);

65: } else {

66: inet_ntop(AF_INET_6, u->ut_addr_v6,

67: addrtext, sizeof(addrtext));

68: printf (" IPV6: %s\n", addrtext);

69: }

70: }

71: }

72: if (u->ut_type == DEAD_PROCESS) {

73: printf(" завершение : %u: %u\n",

74: u->ut_exit.e_termination,

75: u->ut_exit.e_exit);

76: }

77: printf("\n");

78: }

79:

80: struct utmp * get_next_line (char * id, char * line) {

81: struct utmp request;

82:

83: if (!id && !line)

84: return getutent();

85:

86: memset(&request, 0, sizeof(request));

87:

88: if (line) {

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

Интервал:

Закладка:

Сделать

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

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


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

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

x