Linux实现who

来源:互联网 发布:淘宝人生免费txt下载 编辑:程序博客网 时间:2024/06/05 18:30
$ vi who01.c

新建who01.c


who是用来显示当前用户的用户名、终端类型、登录时间等信息的。


/*** who* open, read UTMP file, and show results*/#include<stdio.h>#include<utmp.h>#include<fcntl.h>#include<unistd.h>#include<time.h>//#define SHOWHOST       // include remote machine on outputvoid show_info( struct utmp * utbufp );int main(void){struct utmp  current_record;  // read information into hearint          utmpfd;          // read from this descriptorint          reclen = sizeof(current_record);if( (utmpfd = open(UTMP_FILE, O_RDONLY)) == -1 ){perror( UTMP_FILE );   // UTMP_FILE is in utmp.hexit(1);}while( read(utmpfd, ¤t_record, reclen) == reclen){show_info(¤t_record);}close( utmpfd );return 0;                       // OK}/*** show_info* displays contents of the utmp struct in human readable from*/void show_info(struct utmp *utbufp ){if(utbufp->ut_type != USER_PROCESS)  // users onlyreturn;printf("% -8.8s", utbufp->ut_name);  // the lognameprintf(" ");                         // a spaceprintf("% -8.8s", utbufp->ut_line);  // the ttyprintf("     ");printf("%12.12s", ctime( &(utbufp->ut_time)) + 4 );    // login time        printf(" ");#ifdef SHOWHOSTprintf("% -8.8s", utbufp->ut_line);  // the host#endifprintf("\n");}


编译、执行

与系统的who输出一模一样啦!


summer个人博客主页http://blog.csdn.net/xiamo20149


参考《Unix/Linux编程实践教程》




0 0
原创粉丝点击