当前位置: 首页 > 编程笔记 >

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

郭元凯
2023-03-14
本文向大家介绍C语言中操作utmp文件的相关函数用法,包括了C语言中操作utmp文件的相关函数用法的使用技巧和注意事项,需要的朋友参考一下

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

#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 有以下几种类型:

  • 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

返回值:返回 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

C语言setutent()函数:从头读取utmp文件中的登录数据
头文件:

#include <utmp.h>

定义函数:

void setutent(void);

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

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

#include <utmp.h>

定义函数:

void endutent(void);

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

范例:请参考getutent().

 类似资料:
  • 本文向大家介绍C语言中改变目录的相关操作函数详解,包括了C语言中改变目录的相关操作函数详解的使用技巧和注意事项,需要的朋友参考一下 C语言fchdir()函数:改变当前工作目录 头文件: 定义函数: 函数说明:fchdir()用来将当前的工作目录改变成以参数fd 所指的文件描述词。 返回值:执行成功则返回 0, 失败返回-1, errno 为错误代码. 范例 执行: C语言rewinddir()函

  • 本文向大家介绍C语言读取文件流的相关函数用法简介,包括了C语言读取文件流的相关函数用法简介的使用技巧和注意事项,需要的朋友参考一下 C语言fread()函数:读文件函数(从文件流读取数据) 头文件: 定义函数: 函数说明:fread()用来从文件流中读取数据. 参数stream 为已打开的文件指针, 参数ptr 指向欲存放读取进来的数据空间, 读取的字符数以参数size*nmemb 来决定. Fr

  • 本文向大家介绍C语言中操作密码文件的一些函数总结,包括了C语言中操作密码文件的一些函数总结的使用技巧和注意事项,需要的朋友参考一下 C语言setpwent()函数:从头读取密码文件中的账号数据 头文件: 定义函数: 函数说明:setpwent()用来将getpwent()的读写地址指回密码文件开头。 范例 执行结果: C语言getpwent()函数:从密码文件中取得账号的数据 头文件: 定义函数:

  • 本文向大家介绍C语言中字符串的内存地址操作的相关函数简介,包括了C语言中字符串的内存地址操作的相关函数简介的使用技巧和注意事项,需要的朋友参考一下 C语言bcopy()函数:复制内存(字符串) 头文件: bcopy() 函数用来复制内存(字符串),其原型为: 【参数】src 为源内存块(字符串)指针,dest 为目标内存块(字符串)指针,n 为要复制的内存(字符串)的前 n 个字节长度。 bcop

  • 本文向大家介绍C语言中计算正弦的相关函数总结,包括了C语言中计算正弦的相关函数总结的使用技巧和注意事项,需要的朋友参考一下 C语言sin()函数:正弦函数 头文件:  sin() 函数用来求给定值的正弦值,其原型为: 【参数】给定的值(弧度)。 【返回值】返回-1 至1 之间的计算结果。 弧度与角度的关系为: 弧度 = 180 / π 角度 角度 = π / 180 弧度 使用 rtod( ) 函

  • 本文向大家介绍C语言中求余弦值的相关函数总结,包括了C语言中求余弦值的相关函数总结的使用技巧和注意事项,需要的朋友参考一下 C语言cos()函数:求余弦值 头文件: cos() 函数用来求余弦值,即求角的临边长度除以斜边长度的比值,其原型为:     【参数】x 为一个弧度。 【返回值】返回-1 至1 之间的计算结果。 弧度与角度的关系为: 弧度 = 180 / π 角度 角度 = π / 180