6.2 口令檔案
和口令檔案對應的字段包含在的結構體passwd中。
#include
struct passwd * getpwuid(uid_t uid);
struct passwd * getpwnam(const char * name); //兩個函式的返回值:若成功則返回指標,若出錯則返回null
如果要檢視的只是登入名或使用者id,那麼這兩個posix.1函式能滿足要求,但是也有些程式要檢視整個口令檔案。下列三個函式則可用於此種目的:
#include
struct passwd* getpwent(void); 返回值:若成功則返回指標,若出錯或達到檔案結尾則返回null
void setpwent(void);
void endpwent(void);
#include #include #include struct passwd * getpwnam(const char *name)6.3 陰影口令
#include
struct spwd* getspnam(const char * name);
struct spwd* getspent(void);
兩個函式返回值:若成功則返回指標,若出錯則返回null
void setspent(void);
void endspent(void);
6.4組檔案
unix組檔案,這些字段包含在中所定義的group結構中。
#include
struct group * getgrgid(gid_t gid);
struct group * getgrnam(congst char * name);
兩個函式返回值:若成功則返回指標 若出錯則返回null
#include
struct group * getgrent(void); 返回值:若成功則返回指標,若出錯或到達檔案結尾則返回null
void setgrent(void);
void endgrent(void);
6.5 附加組id
#include < unistd.h>
int getgroups(int gidsetsize,gid_t grouplist); 返回值:若成功則返回附加組id數, 若出錯則返回-1
#include
#include
int setgroups(int ngroups, const gid_t grouplist);
#include
#include
int initgroups(const char * username,gid_t basegid);
兩個函式返回值:若成功則返回0 錯出錯則返回-1
6.8 登入帳號記錄
大多數unix系統都提供下來連個資料檔案:utmp檔案,它記錄當前登入進系統的各個使用者;
wtmp檔案,它跟蹤各個登入和登出事件
struct utmp
登入時 login程式填寫此型別結構,然後將其寫入到utmp檔案中,同時也將其添寫到wtmp檔案中。
登出時 init程序將utmp檔案中相應的記錄擦除,並將乙個新紀錄添寫到wtmp檔案中。
who(1)程式讀utmp檔案,並以可讀格式列印其內容。
後來unix提供了last命令,它讀wtmp檔案並列印所選擇的記錄。
6.9 系統標識
#include < sys/utsname.h>
int uname(struct utsname * name); //返回值:若成功則返回非負值,若出錯則返回-1
struct utsname;
#incluce
int gethostname(char * name , int namelen); //返回值:若成功則返回0 若出錯則返回-1
6.10 時間和日期例程
time_t time(time_t * calptr); //返回值:若成功則返回時間值,若出錯則返回-1
time_t自國際標準時間公元2023年1月1日00:00:00以來經過的秒數。這種秒數是以資料型別time_t表示的。我們稱它為日曆時間。麗日時間包括時間和日期。
gettimeofday提供了更高的解析度
#include
int gettimeofday(struct timeval * restrict tp, void * restrict tzp);
struct timeval
#include
struct tm * gmtime(const time_t * calptr);
struct tm * localtime(const time_t * calptr); //兩個函式返回值:指向tm結構的指標
區別:localtime將日曆時間轉換成本地時間(考慮到本地時區和夏時制標誌) 而gmtime則將日曆轉換成國際標準時間為年,月 日 時 分 秒 週日
#include
time_t mktime(struct tm* tmptr); 返回值:若成功則返回日曆事件, 若出錯則返回-1
#include
char * asctime(const struct tm* tmptr);
char * ctime(const time_t calptr); 連個函式的返回值:指向以null結尾的字串的指標
#include
size_t strftime(char * restrict buf, size_t maxsize,const char * restrict format, const sturct tm * restrict tmprt);
返回值:若有空間則返回存入陣列的字元數,否則返回0
APUE 第六章 系統資料檔案和資訊
口令檔案 struct passwd struct passwd getpwuid uid t uid 通過使用者id獲得相應的passwd結構 struct passwd getpwnam const char name 通過使用者名稱獲得相應的passwd結構 void setpwent 初始化...
APUE筆記 第六章 系統資料檔案和資訊
功能 訪問口令檔案中資訊。功能 檢視整個口令檔案。功能 檢視組名或數值組id。功能 搜尋整個組檔案,則須使用另外幾個函式。這三個函式類似於針對口令檔案的三個函式。功能 訪問和設定新增組id。功能 返回與主機和作業系統有關的資訊。兩個函式localtime和gmtime將日曆時間變換成以年 月 日 時...
單刷APUE系列 第六章 系統資料檔案和資訊
使用過unix系統的朋友應該知道 etc passwd檔案,這就是unix系統口令檔案,在posix1.x規範中規定unix系統必須存在使用者資料庫,這些使用者資料庫裡每個使用者都需要包含一些字段,具體需要檢視標頭檔案。struct passwd 複製 在很多unix系統中,passwd是乙個asc...