who 命令实现
用户登陆信息放在/var/run/utmp , 存储的数据格式为:struct utmp ,该结构体的说明在 /usr/include /bits/utmp中找到,存储的信息比较丰富,这里只阐述who命令的实现,对与utmp数据结构元素的意义不做详细的描述。
#include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <utmp.h>
struct utmp utmp_buf;
int main(void) { int fd; size_t who_state=1; // return 0;
fd=open("/var/run/utmp",O_RDONLY); while(who_state) { who_state=read(fd,&utmp_buf,sizeof(struct utmp)); printf("ut_type: %d ut_line: %s ut_id: %d ",utmp_buf.ut_type,utmp_buf.ut_line,utmp_buf.ut_id ); printf("ut_user: %s ut_host: %s ut_session:%d \n",utmp_buf.ut_user,utmp_buf.ut_host,utmp_buf.ut_session); // printf(utmp_buf.ut_user);
printf("\n"); } return 0; }
|
阅读(835) | 评论(0) | 转发(0) |