日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux查看utmp文件,linuxc操作utmp和wtmp文件接口

發布時間:2025/4/5 linux 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux查看utmp文件,linuxc操作utmp和wtmp文件接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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文件接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。