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; }
就寫到這里了,希望對大家有幫助。。不對之處還請指教,,謝謝~~