who命令可以显示出登陆的用户和时间等信息。
它的工作原理是读取/var/run/utmp文件
再利用man -k utmp来搜索,知道跟它密切相关的应该是man 5 utmp
utmp文件记录了当前一部分正在使用系统的用户信息,但是它不是所有的用户,有些程序不在utmp文件中登记。
该文件在头文件utmp.h中定义了一个结构体来存储信息
#define UT_LINESIZE 32
#define UT_NAMESIZE 32
#define UT_HOSTSIZE 256
struct utmp {
short ut_type; /* Type of record */
pid_t ut_pid; /* PID of login process */
char ut_line[UT_LINESIZE]; /* Device name of tty - "/dev/" */
char ut_id[4]; /* Terminal name suffix,
or inittab(5) ID */
char ut_user[UT_NAMESIZE]; /* Username */
char ut_host[UT_HOSTSIZE]; /* Hostname for remote login, or
kernel version for run-level
messages */
struct exit_status ut_exit; /* Exit status of a process
marked as DEAD_PROCESS; not
used by Linux init (1 */
/* The