博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
/var/run/utmp文件操作函数
阅读量:4639 次
发布时间:2019-06-09

本文共 1175 字,大约阅读时间需要 3 分钟。

相关函数:getutent, getutid, getutline, setutent, endutent, pututline, utmpname

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

 

 

范例

#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();
}

转载于:https://www.cnblogs.com/wangliangblog/p/8533788.html

你可能感兴趣的文章
TMS320F28335项目开发记录2_CCS与JTAG仿真器连接问题汇总
查看>>
最强的篮球队和马尔可夫模型
查看>>
hdu-4302-Holedox Eating-线段树-单点更新,有策略的单点查询
查看>>
cocos2d-x 音效中断问题
查看>>
子分类账知识学习(汇总网上比较有用的资料)
查看>>
pyQt 每日一练习 -- 登录框
查看>>
wp 删除独立存储空间文件(多级非空文件夹删除)
查看>>
Loadrunner安装使用入门
查看>>
smartupload 上传文件时 把页面编码改成gbk 解决乱码
查看>>
EPS是什么格式
查看>>
Python的数据库操作(Sqlalchemy)
查看>>
2.抽取代码(BaseActivity)
查看>>
My simplified pickit2 clone
查看>>
Redis 入门知识
查看>>
夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
查看>>
转--Android如何在java代码中设置margin
查看>>
反射的所有api
查看>>
Js 判断网页窗口是否滚动到底部
查看>>
上传文件
查看>>
css 定位及遮罩层小技巧
查看>>