源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-06-12 01:57 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C语言中操作utmp文件的相关函数用法
[b]C语言getutent()函数:从utmp文件中取得账号登录数据 [/b]头文件:
#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 有以下几种类型: [list] [*]EMPTY:此为空的记录.[/*] [*]RUN_LVL:记录系统run-level 的改变[/*] [*]BOOT_TIME:记录系统开机时间[/*] [*]NEW_TIME:记录系统时间改变后的时间[/*] [*]OLD_TINE:记录当改变系统时间时的时间.[/*] [*]INIT_PROCESS:记录一个由init 衍生出来的进程.[/*] [*]LOGIN_PROCESS:记录 login 进程.[/*] [*]USER_PROCESS:记录一般进程.[/*] [*]DEAD_PROCESS:记录一结束的进程.[/*] [*]ACCOUNTING:目前尚未使用.[/*] [/list] exit_status 结构定义:
struct exit_status
{
  short int e_termination; //进程结束状态
  short int e_exit; //进程退出状态
};
timeval 的结构定义请参考gettimeofday()。 相关常数定义如下: [list] [*]UT_LINESIZE 32[/*] [*]UT_NAMESIZE 32[/*] [*]UT_HOSTSIZE 256[/*] [/list] 返回值:返回 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 [b]C语言setutent()函数:从头读取utmp文件中的登录数据 [/b]头文件:
#include <utmp.h>
定义函数:
void setutent(void);
函数说明:setutent()用来将getutent()的读写地址指回utmp 文件开头。 [b]C语言endutent()函数:关闭文件(关闭utmp文件) [/b]头文件:
#include <utmp.h>
定义函数:
void endutent(void);
函数说明:endutent()用来关闭由getutent 所打开的utmp 文件。 范例:请参考getutent().
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部