1. 程式人生 > >linux系統程式設計之程序的環境變數

linux系統程式設計之程序的環境變數

環境變數:

環境變數,是指在作業系統中用來指定作業系統執行環境的一些引數。通常具備以下特徵:
① 字串(本質) ② 有統一的格式:名=值[:值] ③ 值用來描述程序環境資訊。

儲存形式:與命令列引數類似。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;
}