登录记账

utmp 文件维护着当前登录进系统的用户记录,每一个用户登录进系统是都会想utmp文件写入一条信息,这条信息包含一个记录着用户名的ut_user字段,当用户登出的时候该条记录会被删除(who之类的程序就是使用utmp文件中的信息来显示当前登录进系统的用户列表)
wtmp文件包涵登录登出记录,功能类似utmp,只是当用户等处系统时还会向这个文件附加一条记录,该条记录与的呢公路信息相同,但是ut_user字段会被置零(last命令就是使用wtmp文件内容)

#include<utmpx.h>
//将utmp文件的当前位置设置到文件的起始位置,当utmp文件没有被打开时,setutxent()和getutx*()会打开这个文件
void setutxent(void);

//关闭utmp文件
void endutxent(void);

//getutxent(),getutxid()和getutxline()会从utmp文件中读取一个记录并返回一个只想utmpx结构的指针,搜索失败返回NULL
struct utmpx *getutxent(void);
struct utmpx *getutxid(const struct utmpx *ut); //根据ut参数中ut_type和ut_id字段的值在utmp文件中搜索一个记录
struct utmpx *getutxline(const struct utmpx *ut);//根据ut参数ut_type字段和ut_line字段匹配

//默认情况下,所有getutx*()函数都使用标准的utmp文件,如果需要使用另一个文件,例如wtmp文件,需要调用utmpxname()并制定目标路径名
int utmpxname(const char *file);//仅仅复制路径名,不会打开文件,但会关闭之前有其他调用打开的所有文件

#include<unistd.h>
char *getlogin(void);   //获取登录名字,搜索utmp文件以找出ut_line值与终端名匹配的记录,如果找到了,返回记录中的ut_user字符串

这里写图片描述

posted on 2017-10-25 18:06  标配的小号  阅读(265)  评论(0编辑  收藏  举报

导航