linuxc操作utmp和wtmp文件接口

/var/run/utmp 保存当前在本系统中的用户信息

/var/log/wtmp 保存登陆过本系统的用户信息

他们保存的信息是基于结构体 struct utmp 的(/usr/include/bits/utmp.h)

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; //进程退出状态

};

struct timeval 结构定义:

struct timeval{

time_t tv_sec; /* 秒数 */

suseconds_t tv_usec; /* 微秒 */

};

相关常数定义如下:

UT_LINESIZE 32

UT_NAMESIZE 32

UT_HOSTSIZE 256

读取和修改这些文件的函数如下:

#include struct utmp *getutent(void);

//从 utmp 文件中,每次读取一个 struct tump 结构体。读完文件或者失败返回NULL

//附加说明:getutent()在第一次调用时会打开utmp 文件, 读取数据完毕后可使用endutent()来关闭该utmp文件

struct utmp *getutid(struct utmp *ut);

//从 utmp 文件中的读写位置逐一往后搜索参数 ut 指定的记录

//1、如果ut->ut_type 为RUN_LVL, BOOT_TIME, NEW_TIME, OLD_TIME 其中之一则查找与ut->ut_type 相符的记录;

//2、若ut->ut_type为INIT_PROCESS, LOGIN_PROCESS, USER_PROCESS 或DEAD_PROCESS 其中之一, 则查找与ut->ut_id相符的记录.

struct utmp *getutline(struct utmp *ut);

//从utmp 文件的读写位置逐一往后搜索ut_type 为USER_PROCESS 或LOGIN_PROCESS 的记录, 而且ut_line 和ut->ut_line 相符.

struct utmp *pututline(struct utmp *ut);

//将一个struct utmp结构体写进文件utmp中

void setutent(void);

//打开文件utmp,并且将文件指针指向文件的最开始。

void endutent(void);

//关闭文件utmp

int utmpname(const char *file);

//设定utmp文件所在的路径,默认的路径为宏 _PATH_UTMP,该宏定义在/usr/include/paths.h中

http://www.dengb.com/Linuxjc/1035702.htmlwww.dengb.comtruehttp://www.dengb.com/Linuxjc/1035702.htmlTechArticlelinuxc操作utmp和wtmp文件接口 /var/run/utmp 保存当前在本系统中的用户信息 /var/log/wtmp 保存登陆过本系统的用户信息 他们保存的信息是基于结构...

Linux查看utmp文件,linuxc操作utmp和wtmp文件接口相关推荐

  1. linux 查看磁盘空间 拷贝不同目录下的文件

    linux 查看磁盘空间 df -h 拷贝不同目录下的文件 cp -rf 目录1 目录2 目录1是需要拷贝的文件所在目录 目录2是需要存放的位置 cp -rf /data/ws/m2e2/ ././表 ...

  2. linux查看网卡连接哪个cpu,Linux查看CPU/内存/网卡/操作系统信息

    测试机器的硬件信息: 查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon(R) CP ...

  3. linux查看redis命令,linux查看redis版本怎么操作?具体示例

    对于有相关开发经验的朋友来说,linux作为一套免费使用和自由传播的类UNIX操作系统,相信你们肯定是比较亲切的,那么今天我们一起了解的是,怎么用linux查看redis版本号? 工具/原料:linu ...

  4. 属于python文件的操作有_Python的文件操作

    1.初始文件操作 1.使用python读写文件使用open()函数获取文件句柄,就可以操作文件了,根据打开方式不同能执行的操作也不同. 打开方式有: r.w.a.r+.w+.a+.rb.wb.ab.r ...

  5. python对文件的操作模式_python对文件的操作

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件 ...

  6. Git 删除 GitHub仓库的文件——详细操作 githua如何删除文件

    Git 删除 GitHub仓库的文件--详细操作_没有余地没有余地的博客-CSDN博客_github删除仓库文件 目录 一.删除已有Github仓库 二.删除Github中的某个文件或文件夹 如果没有 ...

  7. 文件的操作,如何做文件上传

    上传就是本地的文件,比如说一张图片放到服务器上 先做一个form表单 <form action="shangchuan.php" method="post" ...

  8. linux查看gc日志,将GC日志输出到文件

    将GC日志输出到文件:不同JDK设置的参数不同,参考JDK官方文档 SUN:-Xloggc:filename (例如:-Xloggc:D:/gc.log)  linux windows IBM:-Xv ...

  9. linux 遍历文件及文件夹,linux文件夹操作及递归遍历文件夹(示例代码)

    文件夹相关函数介绍 //mkdir 函数创建文件夹 #include #include int mkdir(const char *pathname, mode_t mode); //rmdir 删除 ...

最新文章

  1. mysql 函数返回表格_mysql 数据分析如何实现日报、周报、月报和年报?
  2. 一笔画 (25 分)
  3. 【Cisco NP】EIGRP的基本配置
  4. 网站增改不要只想着收益更应该思考原有的损失
  5. linux内核tor03,Linux内核x86架构引导协议4(翻译)
  6. Linux下的命令总结笔记(一)
  7. C#中lock死锁实例教程
  8. BugKuCTF WEB 域名解析
  9. layui流加载及传参
  10. java 反射初探(1)
  11. java 流 存放在哪_java IO流学习
  12. 数据库 linux 编译,部署mariadb数据库到linux(源码编译安装)
  13. 热流体动压润滑matlab_设备润滑知识点(下午见)
  14. 驱动级的自动按键_太牛了!业余单片机爱好者用DS3231制作自动亮度的4位数码管时钟...
  15. php vue是什么,vue.js是什么软件
  16. 【工赋开发者社区】产业互联网和工业互联网的区别
  17. 缺少比较器,运放来救场!(运放当做比较器电路记录)
  18. 111-GAMP处理流程
  19. 知到计算机应用基础见面课答案,知到计算机应用基础(湖南环境生物职业技术学院)见面课答案...
  20. 简单架设Jabber 局域网即时通讯服务器

热门文章

  1. 阿里云服务器怎么安装docker
  2. 多重背包2[二进制位优化]
  3. redis shutdown (error) ERR Errors trying to SHUTDOWN. Check logs.
  4. mysql面试100题及答案_PHP面试100题汇总
  5. 园林系统优秀党员推荐材料_昆山合纵生态科技有限公司——园林废弃物循环利用“昆山合纵模式”的探索和实践者...
  6. linux赋予文件夹所有权限_linux – 如何将某些用户权限仅授予子文件夹
  7. Android中的基础控件CheckBox、RadioButton、ToggleButton、SeekBar
  8. C语言记录元音字母的位置,算法训练 确定元音字母位置
  9. python面试装饰器_Python测开面试题之装饰器
  10. C语言整数加法器,【菜鸟解析】C++大数加法器的实现