1、getenv
標頭檔 |
#include<stdlib.h> |
函數原型 |
char * getenv(const char *name); |
函數說明 |
getenv()用來取得參數name環境變數的內容。參數name為環境變數的名稱,如果該變數存在則會返回指向該內容的指標。環境變數的格式為name=value。 |
傳回值 |
執行成功則返回指向該內容的指標,找不到符合的環境變數名稱則返回NULL。 |
舉例:
#include<stdlib.h>
int mian()
{
char *p;
if((p = getenv(“USER”)))
printf(“USER=%s\n”,p);
return 0;
}
執行結果:USER = root
2、putenv
標頭檔 |
#include4<stdlib.h> |
定義函數 |
int putenv(const char * string); |
函數說明 |
putenv()用來改變或增加環境變數的內容。參數string的格式為name=value,如果該環境變數原先存在,則變數內容會依參數string改變,否則此參數內容會成為新的環境變數。 |
傳回值 |
執行成功則返回0,有錯誤發生則返回-1。 |
舉例:
#include<stdlib.h>
int main()
{
char *p;
if((p = getenv(“USER”)))
printf(“USER =%s\n”,p);
putenv(“USER=test”);
printf(“USER+%s\n”,getenv(“USER”));
}
執行:
USER=root
USER=test
3、setenv
標頭檔 |
#include<stdlib.h> |
定義函數 |
int setenv(const char *name,const char * value,int overwrite); |
函數說明 |
setenv()用來改變或增加環境變數的內容。參數name為環境變數名稱字串。 |
參數 |
value則為變數內容,參數overwrite用來決定是否要改變已存在的環境變數。如果overwrite不為0,而該環境變數原已有內容會被改為參數value所指的變數內容。如果overwrite為0,且該環境變數已有內容,則參數value會被忽略。 |
傳回值 |
執行成功則返回0,有錯誤發生時返回-1。 |
舉例:
#include<stdlib.h>
int main()
{
char * p;
if((p=getenv(“USER”)))
printf(“USER =%sn”,p);
setenv(“USER”,"test",1);
printf(“USER=%sn”,getenv(“USEr”));
unsetenv(“USER”);
printf(“USER=%sn”,getenv(“USER”));
}
執行:
USER = root
USER = test
USER = (null)
說明:1、unsetenv函數就是清除環境變數的值(value),這個很明顯
2、如果overwrite 的值是0,並且環境變數name中的value是空(NULL),也會將傳進的參數值value賦給環境變數name。這一特性經常使用。