C语言中操作utmp文件的相关函数用法
C语言getutent()函数:从utmp文件中取得账号登录数据
头文件:
#include <utmp.h>
定义函数:
struct utmp *getutent(void);
函数说明:getutent()用来从utmp 文件(/var/run/utmp)中读取一项登录数据, 该数据以utmp 结构返回. 第一次调用时会取得第一位用户数据, 之后每调用一次就会返回下一项数据, 直到已无任何数据时返回NULL。
utmp 结构定义如下:
struct utmp { short int ut_type; //登录类型 pid_t ut_pid; //login 进程的pid char ut_line[UT_LINESIZE]; //登录装置名, 省略了"/dev/" char ut_id[4]; //Inittab ID char ut_user[UT_NAMESIZE]; //登录账号 char ut_host[UT_HOSTSIZE]; //登录账号的远程主机名称 struxt exit_status ut_exit; //当类型为DEAD_PROCESS 时进程的结束状态 long int ut_session; //Sessioc ID struct timeval ut_tv; //时间记录 int32_t ut_addr_v6[4]; //远程主机的网络地址 char __unused[20]; //保留未使用 };
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 结构定义:
struct exit_status { short int e_termination; //进程结束状态 short int e_exit; //进程退出状态 };
timeval 的结构定义请参考gettimeofday()。
相关常数定义如下:
- UT_LINESIZE 32
- UT_NAMESIZE 32
- UT_HOSTSIZE 256
返回值:返回 utmp 结构数据, 如果返回NULL 则表示已无数据, 或有错误发生.
附加说明:getutent()在第一次调用时会打开utmp 文件, 读取数据完毕后可使用endutent()来关闭该utmp文件.
范例
#include <utmp.h> main() { struct utmp *u; while((u = getutent())) { if(u->ut_type == USER_PROCESS) printf("%d %s %s %s \n", u->ut_type, u->ut_user, u->ut_line, u->ut_host); } endutent(); }
执行
//表示有三个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文件中的登录数据
头文件:
#include <utmp.h>
定义函数:
void setutent(void);
函数说明:setutent()用来将getutent()的读写地址指回utmp 文件开头。
C语言endutent()函数:关闭文件(关闭utmp文件)
头文件:
#include <utmp.h>
定义函数:
void endutent(void);
函数说明:endutent()用来关闭由getutent 所打开的utmp 文件。
范例:请参考getutent().
上一篇:在C语言中转换时间的基本方法介绍
栏 目:C语言
下一篇:对比C语言中memccpy()函数和memcpy()函数的用法
本文标题:C语言中操作utmp文件的相关函数用法
本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/2829.html
您可能感兴趣的文章
- 04-02c语言函数调用后清空内存 c语言调用函数删除字符
- 04-02c语言的正则匹配函数 c语言正则表达式函数库
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言中对数函数的表达式 c语言中对数怎么表达
- 04-02c语言用函数写分段 用c语言表示分段函数
- 04-02c语言编写函数冒泡排序 c语言冒泡排序法函数
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段函数
- 04-02C语言中怎么打出三角函数 c语言中怎么打出三角函数的值
- 04-02c语言调用函数求fibo C语言调用函数求阶乘
阅读排行
本栏相关
- 04-02c语言函数调用后清空内存 c语言调用
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言的正则匹配函数 c语言正则表达
- 04-02c语言用函数写分段 用c语言表示分段
- 04-02c语言中对数函数的表达式 c语言中对
- 04-02c语言编写函数冒泡排序 c语言冒泡排
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段
- 04-02C语言中怎么打出三角函数 c语言中怎
- 04-02c语言调用函数求fibo C语言调用函数求
随机阅读
- 01-10C#中split用法实例总结
- 01-10delphi制作wav文件的方法
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-11ajax实现页面的局部加载
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 04-02jquery与jsp,用jquery
- 01-10SublimeText编译C开发环境设置
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 08-05织梦dedecms什么时候用栏目交叉功能?