C語言getutent()函數(shù):從utmp文件中取得賬號(hào)登錄數(shù)據(jù)
頭文件:
#include <utmp.h>
定義函數(shù):
struct utmp *getutent(void);
函數(shù)說明:getutent()用來從utmp 文件(/var/run/utmp)中讀取一項(xiàng)登錄數(shù)據(jù), 該數(shù)據(jù)以u(píng)tmp 結(jié)構(gòu)返回. 第一次調(diào)用時(shí)會(huì)取得第一位用戶數(shù)據(jù), 之后每調(diào)用一次就會(huì)返回下一項(xiàng)數(shù)據(jù), 直到已無任何數(shù)據(jù)時(shí)返回NULL。
utmp 結(jié)構(gòu)定義如下:
struct utmp{ short int ut_type; //登錄類型 pid_t ut_pid; //login 進(jìn)程的pid char ut_line[UT_LINESIZE]; //登錄裝置名, 省略了"/dev/" char ut_id[4]; //Inittab ID char ut_user[UT_NAMESIZE]; //登錄賬號(hào) char ut_host[UT_HOSTSIZE]; //登錄賬號(hào)的遠(yuǎn)程主機(jī)名稱 struxt exit_status ut_exit; //當(dāng)類型為DEAD_PROCESS 時(shí)進(jìn)程的結(jié)束狀態(tài) long int ut_session; //Sessioc ID struct timeval ut_tv; //時(shí)間記錄 int32_t ut_addr_v6[4]; //遠(yuǎn)程主機(jī)的網(wǎng)絡(luò)地址 char __unused[20]; //保留未使用};ut_type 有以下幾種類型:
exit_status 結(jié)構(gòu)定義:
struct exit_status{ short int e_termination; //進(jìn)程結(jié)束狀態(tài) short int e_exit; //進(jìn)程退出狀態(tài)};timeval 的結(jié)構(gòu)定義請(qǐng)參考gettimeofday()。
相關(guān)常數(shù)定義如下:
返回值:返回 utmp 結(jié)構(gòu)數(shù)據(jù), 如果返回NULL 則表示已無數(shù)據(jù), 或有錯(cuò)誤發(fā)生.
附加說明:getutent()在第一次調(diào)用時(shí)會(huì)打開utmp 文件, 讀取數(shù)據(jù)完畢后可使用endutent()來關(guān)閉該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();}執(zhí)行
//表示有三個(gè)root 賬號(hào)分別登錄/dev/pts/0, /dev/pts/1, /dev/pts/2
7 root pts/0
7 root pts/1
7 root pts/2
C語言setutent()函數(shù):從頭讀取utmp文件中的登錄數(shù)據(jù)
頭文件:
#include <utmp.h>
定義函數(shù):
void setutent(void);
函數(shù)說明:setutent()用來將getutent()的讀寫地址指回utmp 文件開頭。
C語言endutent()函數(shù):關(guān)閉文件(關(guān)閉utmp文件)
頭文件:
#include <utmp.h>
定義函數(shù):
void endutent(void);
函數(shù)說明:endutent()用來關(guān)閉由getutent 所打開的utmp 文件。
范例:請(qǐng)參考getutent().
新聞熱點(diǎn)
疑難解答
圖片精選