Чтение онлайн

на главную

Жанры

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

Троан Эрик В.

Шрифт:

 10: #include <netinet/in.h>

 11: #include <arpa/inet.h>

 12: #include <utmp.h>

 13: #include <popt.h>

 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) {

 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));

Поделиться:
Популярные книги

Муж на сдачу

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Муж на сдачу

Системный Нуб

Тактарин Ринат
1. Ловец душ
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Системный Нуб

Око василиска

Кас Маркус
2. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Око василиска

Царь Федор. Трилогия

Злотников Роман Валерьевич
Царь Федор
Фантастика:
альтернативная история
8.68
рейтинг книги
Царь Федор. Трилогия

Идеальный мир для Лекаря 5

Сапфир Олег
5. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 5

Я граф. Книга XII

Дрейк Сириус
12. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я граф. Книга XII

В теле пацана 6

Павлов Игорь Васильевич
6. Великое плато Вита
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
В теле пацана 6

Идеальный мир для Лекаря 4

Сапфир Олег
4. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 4

Ты предал нашу семью

Рей Полина
2. Предатели
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ты предал нашу семью

Огненный князь 6

Машуков Тимур
6. Багряный восход
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 6

Маверик

Астахов Евгений Евгеньевич
4. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Маверик

Рядовой. Назад в СССР. Книга 1

Гаусс Максим
1. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Рядовой. Назад в СССР. Книга 1

Имперец. Том 1 и Том 2

Романов Михаил Яковлевич
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 1 и Том 2

В ожидании осени 1977

Арх Максим
2. Регрессор в СССР
Фантастика:
альтернативная история
7.00
рейтинг книги
В ожидании осени 1977