linux系統相關的檔案資訊包含在
/etc/passwd
檔案和/etc/group
中。每次登入
linux
系統以及每次執行
ls -l
命令時都要使用口令檔案。這些欄位都包含在
中定義的
passwd
結構中。
struct passwd ;
使用方法如下:
void getspnam_function()
getspent的方法
void getspent_function()
endspent();
}組檔案:
前面介紹了使用者資訊的獲取方式,下面介紹獲取使用者組資訊的方式
struct group
;#include
struct group *getgrgid(gid_t gid);
struct group *getgrnam(const char *name);
**如下:
void getgrnam_function()
同樣的如果想遍歷所有的使用者組資訊,則可以採用另外幾個函式
#include
struct group *getgrent(void);
void endgrent(void);
時間和日期例程
time函式原型(
time.h
中):
time_t time(time_t *calptr);
引數:
time_t型別變數的指標。
返回值:
time_t型別相當於乙個
long
,time
用於取epoch
記年以來到現在經過的秒數(系統當前時間),
epoch
記年從2023年1
月1日開始。把取到的時間存在指標指向的變數中。
得到的這個值是乙個長整數,直**意義不大。要想轉換成我們直觀的日期需要用到localtime函式。
struct tm *localtime(const time_t *calptr);
引數:
time_t型別變數的指標。
返回值:
指向tm
結構體的指標型別。
作用是將time_t
的值轉換為
tm結構體。然後可以列印輸出。
tm結構體(
time.h
中):
struct tm
;**使用方法如下:
void time_function()
或者是通過mktime的方式:
void strftime_function()
else
}時間差計算:
在評估程式的時候經常要計算程式的執行時間,有兩種方法計算時間差,分別是difftime函式和clock函式
double difftime(time_t time1, time_t time2)
該函式返回以雙精度浮點型 double 值表示的兩個時間之間相差的秒數 (time2 - time1)。
這裡得到的結果就是3秒
void different_time()
但是秒級的粒度太粗了,我們需要評估cpu的執行時間的話就必須採用clock函式
clock_t clock(void) 返回程式執行起(一般為程式的開頭),處理器時鐘所使用的時間。為了獲取 cpu 所使用的秒數,您需要除以 clocks_per_sec。
在 32 位系統中,clocks_per_sec 等於 1000000,該函式大約每 72 分鐘會返回相同的值。
void clock_function()
end=clock();
total=(double)(end-start)/clocks_per_sec;
printf("the total time is:%f\n",total);
}
UNIX程式設計 6 系統資料檔案和資訊
1.口令檔案 口令檔案儲存在 etc passwd中,是乙個ascii檔案 用使用者名稱或uid獲取passwd結構體資訊的函式 include struct passwd getpwuid uid t uid struct passwd getpwnam const char name 獲取口令檔...
系統資料檔案和資訊
include 分別通過uid和使用者名稱獲取與指定使用者相關的passwd資訊 成功返回指標,出錯返回null struct passwd getpwuid uid t uid struct passwd getpwnam const char name passwd結構可以儲存 etc pass...
Unix環境高階程式設計 系統資料檔案和資訊
unix口令檔案 etc passwd 包含了下表所示的字段 系統定義了兩個獲取口令檔案項的函式,在給出使用者登入名或數值使用者id後,這兩個函式能夠檢視相關項。struct passwd getpwuid uid t uid struct passwd getpwnam const char na...