login, logout -
добавление
записей utmp и wtmp
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.
Если быть
точнее,
функция
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 <
[email protected]>, Azamat Hackimov
<
[email protected]>, Dmitry Bolkhovskikh
<
[email protected]>, Katrin Kutepova <
[email protected]>,
Konstantin Shvaykovskiy <
[email protected]>, Yuri Kozlov
<
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]