These functions, derived from BSD, are available in the separate
libutil library, and declared in utmp.h.
Note that the ut_user member of struct utmp is called
ut_name in BSD. Therefore, ut_name is defined as an alias
for ut_user in utmp.h.
— Function: int login_tty (int filedes)
This function makes filedes the controlling terminal of the
current process, redirects standard input, standard output and
standard error output to this terminal, and closes filedes.
This function returns 0 on successful completion, and -1
— Function: void login (const struct utmp *entry)
The login functions inserts an entry into the user accounting
database. The ut_line member is set to the name of the terminal
on standard input. If standard input is not a terminal login
uses standard output or standard error output to determine the name of
the terminal. If struct utmp has a ut_type member,
login sets it to USER_PROCESS, and if there is an
ut_pid member, it will be set to the process ID of the current
process. The remaining entries are copied from entry.
A copy of the entry is written to the user accounting log file.
— Function: int logout (const char *ut_line)
This function modifies the user accounting database to indicate that the
user on ut_line has logged out.
The logout function returns 1 if the entry was successfully
written to the database, or 0 on error.