linux系統程式設計之程序的環境變數
阿新 • • 發佈:2019-02-14
環境變數:
環境變數,是指在作業系統中用來指定作業系統執行環境的一些引數。通常具備以下特徵:
① 字串(本質) ② 有統一的格式:名=值[:值] ③ 值用來描述程序環境資訊。
儲存形式:與命令列引數類似。char *[]陣列,陣列名environ,內部儲存字串,NULL作為哨兵結尾。
使用形式:與命令列引數類似。
載入位置:與命令列引數類似。位於使用者區,高於stack的起始位置。
引入環境變量表:須宣告環境變數。extern char ** environ;
練習:列印當前程序的所有環境變數。
#include<stdio.h> extern char **environ; int main() { int i =0; for(i=0;environ[i];i++) { printf("%s\n",environ[i]); //printf("%s\n",environ[i]); } return 0; }
環境變數的相關函式:
1 getenv函式
獲取環境變數值
char *getenv(const char *name); 成功:返回環境變數的值;失敗:NULL (name不存在)
練習:程式設計實現getenv函式。 【getenv.c】
2 setenv函式
設定環境變數的值
int setenv(const char *name, const char *value, int overwrite); 成功:0;失敗:-1
引數overwrite取值:
1:覆蓋原環境變數 0:不覆蓋。(該引數常用於設定新環境變數,如:ABC = haha-day-night)
3 unsetenv函式
刪除環境變數name的定義
int unsetenv(const char *name); 成功:0;失敗:-1
注意事項:name不存在仍返回0(成功),當name命名為”ABC=”時則會出錯。
#include<stdlib.h> #include<stdio.h> #include<string.h> int main() { char *val; const char *name = "ABD"; val = getenv(name);//獲取name為ABD的環境變數值 printf("name = %s,val = %s.\n",name,val); setenv(name,"this is a test.",1);//設定環境變數ABD的值為“this is a test” val = getenv(name); printf("name = %s,val = %s.\n",name,val); int ret = unsetenv(name);//將name的環境變數取消設定 printf("ret = %d\n",ret);//成功返回0 val = getenv(name); printf("name = %s,val = %s.\n",name,val); return 0; }