環(huán)境變量,在程序中獲取。
shell命令,env 命令 (whereis ps which ps)
env|grep JAVA
程序中獲取環(huán)境變量
#include <iostream>
using namespace std;

int main(int argc,char** argv, char** env)


{

while(env&&*env)
{
cout << *env << endl;
++env;
}
return 0;
}
c++,一個(gè)字符串?dāng)?shù)組,以char**的指針代表的。

所以遍歷時(shí),既要判斷env指向的指針數(shù)組是否為空,也要判斷*env是不是到末端。
=======================================
Unix 系統(tǒng)調(diào)用函數(shù),getenv。
man getenv (或者man -k getenv man -a getenv)
SYNOPSIS
#include <stdlib.h>
char *getenv(const char *name);
得到函數(shù)原型和需要包含的頭文件。
RETURN VALUES
If successful, getenv() returns a pointer to the value in
the current environment; otherwise, it returns a null
pointer.
#include <stdlib.h>
#include <iostream>

using namespace std;

int main()


{
char javahome[200];
strcpy(javahome,getenv("JAVA_HOME"));
cout << javahome << endl;
return 0;
}int putenv(const char* str); 成功返回0;
在程序中添加和修改的環(huán)境變量只對(duì)本進(jìn)程起作用。

代碼棧,存儲(chǔ)著函數(shù)調(diào)用的入口地址,通過(guò)pstack命令可以查看相應(yīng)函數(shù)調(diào)用關(guān)系,也就是代碼棧。
openlab.tarena.ca% pstack 3212
3212: ljlserver
ff198958 accept (0, ffbefad8, ffbefad4, 1)
00010e74 main (1, ffbefb84, ffbefb8c, 216c4, 0, 0) + 348
000109f4 _start (0, 0, 0, 0, 0, 0) + 5c
Unix每個(gè)進(jìn)程的啟動(dòng)都回調(diào)用_start,然后向main傳入?yún)?shù),在main調(diào)用前,env環(huán)境變量就已經(jīng)拷貝到進(jìn)程空間中了。_start負(fù)責(zé)提供前提條件。