进程环境之环境表【转】
本文轉(zhuǎn)載自:http://www.cnblogs.com/nufangrensheng/p/3507968.html
每個程序都會接收到一張環(huán)境表。與參數(shù)表一樣,環(huán)境表也是一個字符指針數(shù)組,其中每個指針包含一個以null結(jié)束的C字符串的地址。全局變量environ則包含了該指針數(shù)組的地址:
extern char **environ; 要在程序中使用全局變量environ時,需要用該語句作變量聲明。extern指示environ在其他文件中已定義,要在本文件中使用。例如,如果該環(huán)境包含5個字符串,那么它看起來可能如圖7-2所示。其中,每個字符串的結(jié)尾處都顯示地有一個null字符。我們稱environ為環(huán)境指針(environment pointer),指針數(shù)組為環(huán)境表,其中各指針指向的字符串為環(huán)境字符串。
按照慣例,環(huán)境由
name=value
這樣的字符串組成,這與圖7-2中所示相同。大多數(shù)預(yù)定義的名字完全由大寫字母組成,但這只是一個慣例。
?
在歷史上,大多數(shù)UNIX系統(tǒng)支持main函數(shù)帶有三個參數(shù),其中第三個參數(shù)就是環(huán)境表的地址:
int main( int argc, char *argv[], char *envp[] );
因為ISO C規(guī)定main函數(shù)只有兩個參數(shù),而且第三個參數(shù)與全局變量environ相比也沒有帶來更多益處,所以POSIX.1也規(guī)定應(yīng)使用environ而不使用第三個參數(shù)。
通常用getenv和putenv函數(shù)來訪問特定的環(huán)境變量,而不是用environ變量。但是,如果要查看整個環(huán)境,則必須使用environ指針。
?
本篇博文內(nèi)容摘自《UNIX環(huán)境高級編程》(第二版),僅作個人學(xué)習(xí)記錄所用。關(guān)于本書可參考:http://www.apuebook.com/。
轉(zhuǎn)載于:https://www.cnblogs.com/zzb-Dream-90Time/p/5934049.html
總結(jié)
以上是生活随笔為你收集整理的进程环境之环境表【转】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个极其高效的虚拟机内存冗余消除机制:U
- 下一篇: 3D旋转立方体案例