====系統環境====
#include <unistd.h>
pid_t getpid(void);
得到當前進程的進程ID號,永遠成功
#include <stdlib.h>
char *getenv(const char *name);
得到給定環境變量名稱的值,如果沒有該變量,返回NULL值
#include <stdlib.h>
int putenv(char *string);
添加一個新的環境變量,傳入的字符串格式為: "name=value"
傳入的string會成為系統環境變量的一部分,也就是說,string不能是局部變量
或者是自動變量,錯誤返回-1值,添加成功返回0
#include <stdlib.h>
int setenv(const char *name, const char *value, int overwrite);
作用同上,不過比putenv更安全,該函數會在環境變量表分配空間,添加該
環境變量,如果overwrite非0,已有同名的環境變量會被覆蓋,返回0表示
成功,-1表示錯誤
#include <stdlib.h>
int unsetenv(const char *name);
刪除一個環境變量,返回0表示刪除成功,-1表示刪除失敗,或者沒有該環境變量
====內存分配====
#include <stdlib.h>
void *malloc(size_t size);
分配size大小的內存,並返回指向該內存的地址指針,返回NULL表示分配出錯
#include <stdlib.h>
void free(void *ptr);
釋放內存,同一指針不能釋放兩次,否則段錯誤
include <stdlib.h>
void *calloc(size_t numitems, size_t size);
分配並返回numitems個size大小的連續內存,並清空內存,字節全置
為0值,返回NULL表示分配出錯
include <stdlib.h>
void *realloc(void *ptr, size_t size);
重新設置已經分配的ptr內存的大小為size,返回新的內存地址
指針,返回NULL表示出錯
====用戶和組====
/etc/passwd 用戶密碼文件
/etc/shadow 用戶影子密碼文件
/etc/group 用戶分組信息文件
#include <pwd.h>
struct passwd *getpwnam(const char *name);
struct passwd *getpwuid(uid_t uid);
使用用戶名或是用戶ID號獲取系統用戶的賬號信息, 成功都返回
一個指針,返回NULL表示出錯,獲取的信息來自/etc/passwd文件
#include <grp.h>
struct group *getgrnam(const char *name);
struct group *getgrgid(gid_t gid);
使用組名,或是組ID號獲取系統用戶組的信息,成功都返回一個
指針,返回NULL表示出錯
#include <pwd.h>
struct passwd *getpwent(void);
void setpwent(void);
void endpwent(void);
getpwent從/etc/passwd文件中按序獲取用戶的信息,成功返回一個
指針,返回NULL表示獲取完畢,需要循環調用該函數
getpwent獲取完畢後,調用endpwent函數關閉清理資源
setpwent函數用來重置當前的用戶信息為文件的第一條用戶記錄
#include <shadow.h>
struct spwd *getspnam(const char *name);
獲取一個賬戶的shadow密碼信息
struct spwd *getspent(void);
void setspent(void);
void endspent(void);
作用同getpwent函數系列,一個個獲取賬戶的密碼信息
#include <unistd.h>
uid_t getuid(void);
uid_t geteuid(void);
gid_t getgid(void);
gid_t getegid(void);
獲取賬戶的用戶ID,組ID,有效用戶ID,有效組ID
用戶ID是指運行該程序的實際擁有者
組ID是指運行該程序的實際用戶組
有效用戶ID是指執行一定權限任務的用戶ID
有效組ID是指執行一定權限任務的用戶組ID
include <unistd.h>
int setuid(uid_t uid);
int setgid(gid_t gid);
設置用戶ID/組ID,成功返回0,錯誤返回-1
#include <unistd.h>
int seteuid(uid_t euid);
int setegid(gid_t egid);
設置有效權限的用戶ID/組ID,成功返回0,錯誤返回-1