LinuxC中全局變量environ


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;
}

 

就寫到這里了,希望對大家有幫助。。不對之處還請指教,,謝謝~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM