国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

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

2020-01-26 14:56:25
字體:
供稿:網(wǎng)友

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

  • 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)定義請(qǐng)參考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í)會(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().

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 五家渠市| 六枝特区| 冕宁县| 麦盖提县| 吴旗县| 鄂托克旗| 博白县| 酉阳| 岳普湖县| 思南县| 南郑县| 梁河县| 裕民县| 昭苏县| 德令哈市| 赤峰市| 京山县| 公安县| 肇庆市| 镇远县| 湾仔区| 永泰县| 临颍县| 上思县| 裕民县| 安康市| 九龙坡区| 镇巴县| 茂名市| 越西县| 崇义县| 卢湾区| 阿拉善盟| 新田县| 彭泽县| 楚雄市| 开平市| 平原县| 新宁县| 资阳市| 陇南市|