Linux repositories inspector
GNU
2017-09-15
Aliases: logout(3), logout(3), logout(3), logout(3), logout(3), logout(3)

man-pages-ru

Russian man pages from the Linux Documentation Project

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

ИМЯ

login, logout - добавление записей utmp и wtmp

ОБЗОР

#include <utmp.h>
void login(const struct utmp *ut);
int logout(const char *ut_line);
Компонуется при указании параметра -lutil.

ОПИСАНИЕ

В файл utmp записываются все, кто в данный момент пользуется системой. В файле wtmp записываются все входы и выходы пользователей. См utmp(5).
Функция login() принимает указанные struct utmp, ut и записывает их в файлы utmp и wtmp.
Функция logout() очищает запись в файле utmp.

Особенности GNU

Если быть точнее, функция login() получает структуру ut в качестве аргумента, заполняет поле ut->ut_type (если такое поле есть) значением USER_PROCESS и поле ut->ut_pid (если такое поле есть) идентификатором вызывающего процесса (PID). После этого она пытается заполнить поле ut->ut_line. Функция берёт первый stdin, stdout, stderr, являющийся терминалом, и сохраняет соответствующий путь (за исключением /dev/ спереди) в это поле, после чего записывает структуру в файл utmp. В случае, если имя терминала не будет обнаружено, данное поле будет заполнено «???», а структура не будет записана в файл utmp. После этого структура будет записана в файл wtmp.
Функция logout() ищет в файле utmp запись, соответствующую аргументу ut_line. Если запись находится, она обновляется заполнением нулям полей ut_name и ut_host, обновляется временная отметка в поле ut_tv, а поле ut_type (если такое поле есть) устанавливается в DEAD_PROCESS.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Функция logout() возвращает 1, если запись была успешно записана в базу данных, и 0, если возникла ошибка.

ФАЙЛЫ

/var/run/utmp
база учётных записей пользователей, настраивается через _PATH_UTMP в <paths.h>
/var/log/wtmp
файл журнала учёта пользователей, настраивается через _PATH_WTMP в <paths.h>

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).
Интерфейс Атрибут Значение
login(),
logout()
Безвредность в нитях MT-Unsafe race:utent
sig:ALRM timer
В приведённой выше таблице utent в race:utent означает, что если любая из функций setutent(3), getutent(3) или endutent(3) используется одновременно в нескольких нитях программы, то может возникнуть состязательность по данным. Эти функции вызываются из login() и logout(), поэтому мы используем race:utent для напоминания.

СООТВЕТСТВИЕ СТАНДАРТАМ

Не является частью POSIX.1. Присутствует в BSD.

ЗАМЕЧАНИЯ

Заметим, что поле ut_user структуры struct utmp в BSD называется ut_name. Поэтому поле ut_name определено как псевдоним ut_user в <utmp.h>.

СМОТРИТЕ ТАКЖЕ

REFERENCED BY

⇧ Top