C语言getutent()函数:从utmp文件中取得账号登录数据
头文件:
定义函数:
struct utmp *getutent(void);函数说明:getutent()用来从utmp 文件(/var/run/utmp)中读取一项登录数据, 该数据以utmp 结构返回. 第一次调用时会取得第一位用户数据, 之后每调用一次就会返回下一项数据, 直到已无任何数据时返回NULL。
utmp 结构定义如下:
ut_type 有以下几种类型:
- EMPTY:此为空的记录.
- RUN_LVL:记录系统run-level 的改变
- BOOT_TIME:记录系统开机时间
- NEW_TIME:记录系统时间改变后的时间
- OLD_TINE:记录当改变系统时间时的时间.
- INIT_PROCESS:记录一个由init 衍生出来的进程.
- LOGIN_PROCESS:记录 login 进程.
- USER_PROCESS:记录一般进程.
- DEAD_PROCESS:记录一结束的进程.
- ACCOUNTING:目前尚未使用.
exit_status 结构定义:
timeval 的结构定义请参考gettimeofday()。
相关常数定义如下:
- UT_LINESIZE 32
- UT_NAMESIZE 32
- UT_HOSTSIZE 256
返回值:返回 utmp 结构数据, 如果返回NULL 则表示已无数据, 或有错误发生.
附加说明:getutent()在第一次调用时会打开utmp 文件, 读取数据完毕后可使用endutent()来关闭该utmp文件.
范例
执行
//表示有三个root 账号分别登录/dev/pts/0, /dev/pts/1, /dev/pts/2
7 root pts/0
7 root pts/1
7 root pts/2
C语言setutent()函数:从头读取utmp文件中的登录数据
头文件:
定义函数:
void setutent(void);函数说明:setutent()用来将getutent()的读写地址指回utmp 文件开头。
C语言endutent()函数:关闭文件(关闭utmp文件)
头文件:
定义函数:
void endutent(void);函数说明:endutent()用来关闭由getutent 所打开的utmp 文件。
范例:请参考getutent().