Most Unix-like operating systems keep track of logged in users by
maintaining a user accounting database. This user accounting database
stores for each terminal, who has logged on, at what time, the process
ID of the user's login shell, etc., etc., but also stores information
about the run level of the system, the time of the last system reboot,
and possibly more.
The user accounting database typically lives in /etc/utmp,
/var/adm/utmp or /var/run/utmp. However, these files
should never be accessed directly. For reading information
from and writing information to the user accounting database, the
functions described in this section should be used.