Linux C中environ 變量是一個char** 類型,存儲着系統的環境變量。
要想周遊環境變量可以用下面這個程式:
#include <stdio.h>
extern char ** environ;
int main()
{
char ** envir = environ;
while(*envir)
{
fprintf(stdout,"%s\n",*envir);
envir++;
}
return 0;
}
因為environ是一個全局的外部變量,是以切記使用前要用extern關鍵字進行聲明,然後在使用。
unistd.h頭檔案中聲明了這個變量,是以也可以将unist.h進行include,這個時候就不用再對environ進行extern聲明了(應為unistd.h中已經聲明了),代碼如下:
#include <stdio.h>
#define __USE_GNU
#include <unistd.h>
//extern char ** environ;
int main()
{
char ** envir = environ;
while(*envir)
{
fprintf(stdout,"%s\n",*envir);
envir++;
}
return 0;
}
要注意的問題是,在unistd.h中聲明environ的地方使用了條件編譯,編譯的條件就是#ifdef __USE_GNU,LinuxC中預設沒有定義這個宏,是以要在#include <unistd.h>之前加上#define __USE_GNU
還有一種方法周遊環境變量,就是利用main函數的參數,我們常見的main函數帶有兩個參數int argc 和 char * argv[], 但實際上還有一個帶有三個參數的main函數,如下:
int main(int argc, char *argv[], char *env[])
{
int index = 0;
while(env[index] != NULL)
{
printf("env[%d]: %s\n", index, env[index]);
++index;
}
return 0;
}
就寫到這裡了,希望對大家有幫助。。不對之處還請指教,,謝謝~~