C語言中操作utmp文件的相關(guān)函數(shù)用法
C語言getutent()函數(shù):從utmp文件中取得賬號登錄數(shù)據(jù)
頭文件:
#include <utmp.h>
定義函數(shù):
struct utmp *getutent(void);
函數(shù)說明:getutent()用來從utmp 文件(/var/run/utmp)中讀取一項(xiàng)登錄數(shù)據(jù), 該數(shù)據(jù)以utmp 結(jié)構(gòu)返回. 第一次調(diào)用時(shí)會取得第一位用戶數(shù)據(jù), 之后每調(diào)用一次就會返回下一項(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]; //登錄賬號
char ut_host[UT_HOSTSIZE]; //登錄賬號的遠(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 有以下幾種類型:
- EMPTY:此為空的記錄.
- RUN_LVL:記錄系統(tǒng)run-level 的改變
- BOOT_TIME:記錄系統(tǒng)開機(jī)時(shí)間
- NEW_TIME:記錄系統(tǒng)時(shí)間改變后的時(shí)間
- OLD_TINE:記錄當(dāng)改變系統(tǒng)時(shí)間時(shí)的時(shí)間.
- INIT_PROCESS:記錄一個(gè)由init 衍生出來的進(jìn)程.
- LOGIN_PROCESS:記錄 login 進(jìn)程.
- USER_PROCESS:記錄一般進(jìn)程.
- DEAD_PROCESS:記錄一結(jié)束的進(jìn)程.
- ACCOUNTING:目前尚未使用.
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)定義請參考gettimeofday()。
相關(guān)常數(shù)定義如下:
- UT_LINESIZE 32
- UT_NAMESIZE 32
- UT_HOSTSIZE 256
返回值:返回 utmp 結(jié)構(gòu)數(shù)據(jù), 如果返回NULL 則表示已無數(shù)據(jù), 或有錯(cuò)誤發(fā)生.
附加說明:getutent()在第一次調(diào)用時(shí)會打開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 賬號分別登錄/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 文件。
范例:請參考getutent().
上一篇:在C語言中轉(zhuǎn)換時(shí)間的基本方法介紹
欄 目:C語言
下一篇:對比C語言中memccpy()函數(shù)和memcpy()函數(shù)的用法
本文標(biāo)題:C語言中操作utmp文件的相關(guān)函數(shù)用法
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/2829.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10delphi制作wav文件的方法
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?


