linux c程式設計 系統資料檔案和資訊

2022-05-30 21:24:12 字數 1969 閱讀 4231

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...