Linux进程环境变量简介
进程环境变量
最早知道环境变量是装jdk时,需要对PATH
进行操作,PATH
也是全局环境变量.
Linux有一些环境变量可以在.bashrc
中修改
#cabal 环境变量添加到PATH中
export PATH=$HOME/.cabal/bin:$PATH
进程也有环境变量,其实就是一些key-value
存储位置位于进程虚拟空间的高地址(栈之上).
通过下面一些函数来操作:
#include <stdlib.h>
char *getenv(const char * name);//返回环境变量的值
//成功返回0,失败返回非0
int setenv(const char *name, const char *value, int overwrite);
//overwrite 参数表示,如果name存在,rewrite非0,则替换,如果为0则不设置新的value
int putenv(char *string);
在CGI程序中,子进程通常需要设置环境变量:
if(pid==0)
{
//...
sprintf(meth_env, "REQUEST_METHOD=%s", req.methodString());
sprintf(length_env, "CONTENT_LENGTH=%d", contentLengthValue);
putenv(meth_env);
putenv(length_env);
//...
}
下面一段代码测试功能:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main()
{
const char * home="HOME";
char *penv=getenv(home);
char buf[128];
sprintf(buf,"ZHANGXIAO=%s",penv);
int ret=putenv(buf);
assert(ret==0);
penv=getenv("ZHANGXIAO");
printf("%s\r\n",penv);
ret = setenv("ZHANGXIAO","new value",0);
assert(ret==0);
penv=getenv("ZHANGXIAO");
printf("%s\r\n",penv);
ret = setenv("ZHANGXIAO","new value",1);
assert(ret==0);
penv=getenv("ZHANGXIAO");
printf("%s\r\n",penv);
return 0;
}
输出结果:
/home/zhangxiao
/home/zhangxiao
new velue
还没有评论,来说两句吧...