• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言中操作utmp文件的相关函数用法

C语言中操作utmp文件的相关函数用法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了utmp,utmp是什么文件,utmp文件,linux utmp,linux下utmp清除等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

C语言getutent()函数:从utmp文件中取得账号登录数据
头文件:

#include <utmp.h>
</div>

定义函数:

struct utmp *getutent(void);
</div>

函数说明: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]; //保留未使用
};
</div>

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

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

执行
//表示有三个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>
</div>

定义函数:

void setutent(void);
</div>

函数说明:setutent()用来将getutent()的读写地址指回utmp 文件开头。

C语言endutent()函数:关闭文件(关闭utmp文件)
头文件:

#include <utmp.h>
</div>

定义函数:

void endutent(void);
</div>

函数说明:endutent()用来关闭由getutent 所打开的utmp 文件。

范例:请参考getutent().

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 在C语言中对utmp文件进行查找和写入操作的函数小结
  • C语言中操作utmp文件的相关函数用法

相关文章

  • 2017-05-28C++生成dll和调用dll的方法实例
  • 2017-05-28探究C++中string类的实现原理以及扩展使用
  • 2017-05-28用C++实现单向循环链表的解决方法
  • 2017-05-28解析C语言中如何正确使用const
  • 2017-05-28C++实现自顶向下的归并排序算法
  • 2017-05-28C++常对象精讲_const关键字的用法
  • 2017-05-28C语言实现斗地主的核心算法
  • 2017-05-28C语言获取消耗内存的方法
  • 2017-05-28c++中引用和指针的区别和联系
  • 2017-05-28关于数组做函数参数的问题集合汇总

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++计算每个字符出现的次数
    • 一波二叉树遍历问题的C++解答实例分享
    • C++虚函数及虚函数表简析
    • 浅谈C语言的字节对齐 #pragma pack(n)2
    • 图文详解c/c++中的多级指针与多维数组
    • Cocos2d-x中CCEditBox文本输入框的使用实例
    • C语言求矩阵的各列元素之和的代码示例
    • va_list(),va_start(),va_arg(),va_end() 详细解析
    • C实现的非阻塞方式命令行端口扫描器源码
    • C语言 数据结构堆排序顺序存储(升序)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有