linux c 操作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 <utmp.h>
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中
linux c 操作utmp 和 wtmp 文件接口的更多相关文章
- Linux 目录操作和4中文件拷贝效率测试
/*1.用户输入任意目录名称,显示该目录下的文件列表信息,包括文件类型,文件权限,文件大小,文件名称2.拷贝用户输入的文件到当前目录下3.第二点功能,使用4种方式完成,并比较说明效率*/ /* str ...
- Linux 日志文件utmp、wtmp、lastlog、messages
1.有关当前登录用户的信息记录在文件utmp中:==who命令 2.登录进入和退出纪录在文件wtmp中:==w命令 3.最后一次登录文件可以用lastlog命令察看: 4.messag ...
- Linux日志文件utmp、wtmp、lastlog、messages
1.有关当前登录用户的信息记录在文件utmp中:==who命令 2.登录进入和退出纪录在文件wtmp中:==w命令 3.最后一次登录文件可以用lastlog命令察看: 4.messag ...
- [转帖]Linux日志文件utmp、wtmp、lastlog、messages
Linux日志文件utmp.wtmp.lastlog.messages https://www.cnblogs.com/zhuiluoyu/p/6874255.html 1.有关当前登录用户的信息记录 ...
- Linux系统编程(2)——文件与IO之系统调用与文件IO操作
系统调用是指操作系统提供给用户程序的一组"特殊"接口,用户程序可以通过这组"特殊"接口来获得得操作系统内核提供的特殊服务.在linux中用户程序不能直接访部内核 ...
- /sys/class/gpio 文件接口操作IO端口(s3c2440)
http://blog.csdn.net/mirkerson/article/details/8464231 在嵌入式设备中对GPIO的操作是最基本的操作.一般的做法是写一个单独驱动程序,网上大多数的 ...
- linux设备驱动程序--在用户空间注册文件接口
linux字符设备驱动程序--创建设备节点 基于4.14内核,运行在beagleBone green 在上一讲中,我们写了第一个linux设备驱动程序--hello_world,在驱动程序中,我们什么 ...
- LInux文件基础知识和文件目录操作(二)文件I/O操作
1.文件I/O操作分为两部分来讲解: 第一部分是非缓冲文件操作,这种操作适合于比较小规模文件的读写和对实时性要求很高的设备的数据通信,这类操作是系统调用提供的: 第二部分是缓冲文件操作,所面向的则是大 ...
- 实现windows操作系统和VB下Linux虚拟操作系统相互传取文件方式总结
在windows上执行虚拟机跑的是Linux的操作系统,怎样才干在不同的操作系统之间传递文件呢? 这是本人切身体会到的,假设你没有好的方法的话.确实非常痛苦.下面是我个人的方法总结: 方法一.很好用的 ...
随机推荐
- qW3xT.2挖矿病毒 解决过程及坑
周一早上老大让我把项目更新一下,然后配置一下elasticsearch,我登上服务器之后部署的时候没有什么感觉,但是在配置elasticsearch的过程中感觉服务器哪个地方有点不对,下意识的top了 ...
- 10.Flask-上下文
1.1.local线程隔离对象 不用local对象的情况 from threading import Thread request = ' class MyThread(Thread): def ru ...
- Spring Boot (8) 全局异常处理
服务层和dao层的最终异常会交给controller处理,控制层的异常则会记录日志系统. 新建一个类用来处理异常,名字随便GlobalDefaultExceptionHandler.java,加上@C ...
- [编码]ASCII、GBK、Unicode(万国码) 和 UTF-8
American ASCII编码 (American Standard Code for Information Interchange,美国信息互换标准代码) China gbk编码 ...
- css中background-origin属性的使用
background-origin用来规定元素背景图像的相对定位位置,它有三个属性值: 1.border-box border-box表示元素背景图像相对于border区域开始定位. 代码如下: &l ...
- XML知识总结
1.XML概念及作用? XML( eXtensible Markup Language,可扩展标记语言)是一种简单的数据存储语言 作用:用来存储和交换数据 无法描述页面的排版和显示形式 2.XML和X ...
- jQueryAjax模拟按键消抖(可设置抖动延迟时间)
在硬件中,按键等都会有抖动现象,如何消除抖动,不重复触发事件呢,这就要用到消抖机制了. 这是我用jQuery模拟硬件消抖原理,额,可能是吧...又不对的地方,希望有高手指点指点. <!DOCTY ...
- apicloud 第三方登录授权、微信、扣扣、微博登录授权
授权登录.接入第三方的配置 例如:微信的登录授权. 首先在模块里面添加 wx 这个模块,然后在项目的配置文件里面进行配置. 配置的时候要现在微信开放平台 https://open.weixin.qq. ...
- MAMP PRO mysql无法启动
mac上可能勾选了软件自动更新,然后MAMP PRO 升级了. 升级了之后,mysql启动就出问题了,看报错日志: InnoDB: The error means the system cannot ...
- 利用Putty/Plink通过ssh tunnel端口转发实现FireFox和Chrome的加密代理访问
如果需要使用远端服务器的DNS:在Firefox中about:config设置 network.proxy.socks_remote_dns ==> true 参考原文:http://think ...