Provided by: manpages-ru-dev_4.21.0-2_all 

ИМЯ
login, logout - добавление записей utmp и wtmp
LIBRARY
System utilities library (libutil, -lutil)
СИНТАКСИС
#include <utmp.h>
void login(const struct utmp *ut);
int logout(const char *ut_line);
ОПИСАНИЕ
В файл 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>.
СМ. ТАКЖЕ
getutent(3), utmp(5)
ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Artyom Kunyov <artkun@guitarplayer.ru>, Azamat
Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Katrin Kutepova
<blackkatelv@gmail.com>, Konstantin Shvaykovskiy <kot.shv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и
Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо
на man-pages-ru-talks@lists.sourceforge.net.
Linux man-pages 6.03 15 декабря 2022 г. login(3)