Linux w Command 的源代码 或者实现机制

来源:百度知道 编辑:UC知道 时间:2024/06/14 07:24:04
utmp结构定义如下
struct utmp
{
short int ut_type; /*登录类型*/
pid_t ut_pid; /*login进程的pid*/
char ut_line[UT_LINESIZE];/*登录装置名,省略了“/dev/”*/
char ut_id[4]; /* Inittab ID*/
char ut_user[UT_NAMESIZE];/*登录账号*/
char ut_host[UT_HOSTSIZE];/*登录账号的远程主机名称*/
struxt exit_status ut_exit;/* 当类型为DEAD_PROCESS时进程的结
束状态*/
long int ut_session; /*Sessioc ID*/
struct timeval ut_tv; /*时间记录*/
int32_t ut_addr_v6[4]; /*远程主机的网络地址*/
char __unused[20]; /* 保留未使用*/
};

没有发现记录最后一次活动时间的域。还请大人明示~

主要通过读取 utmp 文件获得相关信息

可以设定一个结构体变量 struct umtp record,还有一个整形变量 int umlen;

utmpfd = open(UTMP_FILE, O_RDONLY); /*只读方式打开utmp文件*/

/*读取tump文件内容到缓冲区 record*/
while( read(utmpfd, &record, umlen) == umlen )
{
...
}

读出来的信息包含,用户名,TTY,时间等等的信息。这些信息都定义在 utmp 这个文件里。