Linux实现who
2015-07-06 00:53
399 查看
$ 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 output void show_info( struct utmp * utbufp ); int main(void) { struct utmp current_record; // read information into hear int utmpfd; // read from this descriptor int reclen = sizeof(current_record); if( (utmpfd = open(UTMP_FILE, O_RDONLY)) == -1 ) { perror( UTMP_FILE ); // UTMP_FILE is in utmp.h exit(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 only return; printf("% -8.8s", utbufp->ut_name); // the logname printf(" "); // a space printf("% -8.8s", utbufp->ut_line); // the tty printf(" "); printf("%12.12s", ctime( &(utbufp->ut_time)) + 4 ); // login time printf(" "); #ifdef SHOWHOST printf("% -8.8s", utbufp->ut_line); // the host #endif printf("\n"); }
编译、执行
与系统的who输出一模一样啦!
summer个人博客主页http://blog.csdn.net/xiamo20149
参考《Unix/Linux编程实践教程》
相关文章推荐
- Linux socket 初步
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区
- Linux VS Unix:Linux欲一统天下 Unix不死
- linux下设定环境变量
- Linux下修改MySQL编码的方法