C說話中操作utmp文件的相干函數用法。本站提示廣大學習愛好者:(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 有以下幾品種型:
exit_status 構造界說:
struct exit_status { short int e_termination; //過程停止狀況 short int e_exit; //過程加入狀況 };
timeval 的構造界說請參考gettimeofday()。
相干常數界說以下:
前往值:前往 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().