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

ИМЯ

       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)