程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話中操作utmp文件的相干函數用法

C說話中操作utmp文件的相干函數用法

編輯:關於C++

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 有以下幾品種型:

  • 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; //過程加入狀況
};

timeval 的構造界說請參考gettimeofday()。

相干常數界說以下:

  • UT_LINESIZE 32
  • UT_NAMESIZE 32
  • UT_HOSTSIZE 256

前往值:前往 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().

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved