欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言中操作utmp文件的相關(guān)函數(shù)用法

 更新時間:2015年08月28日 16:08:08   投稿:goldensun  
這篇文章主要介紹了C語言中操作utmp文件的相關(guān)函數(shù)用法,包括getutent()函數(shù)和setutent()函數(shù)以及endutent()函數(shù),需要的朋友可以參考下

C語言getutent()函數(shù):從utmp文件中取得賬號登錄數(shù)據(jù)
頭文件:

#include <utmp.h>

定義函數(shù):

struct utmp *getutent(void);

函數(shù)說明:getutent()用來從utmp 文件(/var/run/utmp)中讀取一項登錄數(shù)據(jù), 該數(shù)據(jù)以utmp 結(jié)構(gòu)返回. 第一次調(diào)用時會取得第一位用戶數(shù)據(jù), 之后每調(diào)用一次就會返回下一項數(shù)據(jù), 直到已無任何數(shù)據(jù)時返回NULL。

utmp 結(jié)構(gòu)定義如下:

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; //當(dāng)類型為DEAD_PROCESS 時進程的結(jié)束狀態(tài)
  long int ut_session; //Sessioc ID
  struct timeval ut_tv; //時間記錄
  int32_t ut_addr_v6[4]; //遠程主機的網(wǎng)絡(luò)地址
  char __unused[20]; //保留未使用
};

ut_type 有以下幾種類型:

  • EMPTY:此為空的記錄.
  • RUN_LVL:記錄系統(tǒng)run-level 的改變
  • BOOT_TIME:記錄系統(tǒng)開機時間
  • NEW_TIME:記錄系統(tǒng)時間改變后的時間
  • OLD_TINE:記錄當(dāng)改變系統(tǒng)時間時的時間.
  • INIT_PROCESS:記錄一個由init 衍生出來的進程.
  • LOGIN_PROCESS:記錄 login 進程.
  • USER_PROCESS:記錄一般進程.
  • DEAD_PROCESS:記錄一結(jié)束的進程.
  • ACCOUNTING:目前尚未使用.

exit_status 結(jié)構(gòu)定義:

struct exit_status
{
  short int e_termination; //進程結(jié)束狀態(tài)
  short int e_exit; //進程退出狀態(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ù), 或有錯誤發(fā)生.

附加說明:getutent()在第一次調(diào)用時會打開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í)行
//表示有三個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().

相關(guān)文章

  • C語言詳解格式控制符scanf與printf的輸入輸出

    C語言詳解格式控制符scanf與printf的輸入輸出

    這篇文章主要介紹了C語言格式控制符中輸入scanf()和輸出printf()的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2022-04-04
  • C語言求字符串長度的四種方法實例代碼

    C語言求字符串長度的四種方法實例代碼

    在C語言的應(yīng)用過程中經(jīng)常性的會用到字符串,以及對字符串的長度進行計算的問題,下面這篇文章主要給大家介紹了關(guān)于C語言求字符串長度的四種方法的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • C++實現(xiàn)公司人事管理系統(tǒng)

    C++實現(xiàn)公司人事管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)公司人事管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 用C語言來實現(xiàn)一個簡單的虛擬機

    用C語言來實現(xiàn)一個簡單的虛擬機

    這篇文章主要介紹了用C語言來實現(xiàn)一個簡單的虛擬機,其中棧數(shù)組的部分非常值得學(xué)習(xí),需要的朋友可以參考下
    2015-07-07
  • 關(guān)于C/C++中的side effect(負效應(yīng))和sequence point(序列點)

    關(guān)于C/C++中的side effect(負效應(yīng))和sequence point(序列點)

    不知你在寫code時是否遇到這樣的問題?int i = 3; int x = (++i) + (++i) + (++i); 問x值為多少?進行各種理論分析,并在編譯器上實踐,然而可能發(fā)現(xiàn)最終的結(jié)果是不正確的,也是不穩(wěn)定的,不同的編譯器可能會產(chǎn)生不同的結(jié)果。這讓人很頭疼
    2013-10-10
  • C++ abs函數(shù)實際應(yīng)用詳解

    C++ abs函數(shù)實際應(yīng)用詳解

    本文我們來講C++的abs函數(shù)以及實戰(zhàn)運用,C++中的abs函數(shù)。在C++中使用abs函數(shù)要注意存在兩種版本,一種是在stdlmb.h中定義的版本,另一個是在cmath頭文件中定義的。夷實上在stdlib.h文件是C的函數(shù),而cmath中的是C++版本
    2022-08-08
  • C語言設(shè)置和取得socket狀態(tài)的相關(guān)函數(shù)用法

    C語言設(shè)置和取得socket狀態(tài)的相關(guān)函數(shù)用法

    這篇文章主要介紹了C語言設(shè)置和取得socket狀態(tài)的相關(guān)函數(shù)用法,分別是setsockopt()函數(shù)和getsockopt()函數(shù)的使用介紹,需要的朋友可以參考下
    2015-09-09
  • C++內(nèi)存分區(qū)模型超詳細講解

    C++內(nèi)存分區(qū)模型超詳細講解

    在了解內(nèi)存分區(qū)之前,我們先來聊一聊為什么要進行內(nèi)存分區(qū)。在進行了內(nèi)存分區(qū)之后,在不同的區(qū)域存放的數(shù)據(jù),會有不同的生命周期,從而會讓程序員的編程變得更加靈活
    2022-11-11
  • C++實現(xiàn)LeetCode(92.倒置鏈表之二)

    C++實現(xiàn)LeetCode(92.倒置鏈表之二)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(倒置鏈表之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言中結(jié)構(gòu)體偏移及結(jié)構(gòu)體成員變量訪問方式的問題討論

    C語言中結(jié)構(gòu)體偏移及結(jié)構(gòu)體成員變量訪問方式的問題討論

    這篇文章主要介紹了C語言中結(jié)構(gòu)體偏移及結(jié)構(gòu)體成員變量訪問方式的問題討論,幫助大家理解struct的成員變量偏移,需要的朋友可以參考下
    2016-05-05

最新評論