Linux进程环境变量简介

以你之姓@ 2022-06-15 03:13 348阅读 0赞

进程环境变量

最早知道环境变量是装jdk时,需要对PATH进行操作,PATH也是全局环境变量.
Linux有一些环境变量可以在.bashrc中修改

  1. #cabal 环境变量添加到PATH中
  2. export PATH=$HOME/.cabal/bin:$PATH

进程也有环境变量,其实就是一些key-value
存储位置位于进程虚拟空间的高地址(栈之上).
通过下面一些函数来操作:

  1. #include <stdlib.h>
  2. char *getenv(const char * name);//返回环境变量的值
  3. //成功返回0,失败返回非0
  4. int setenv(const char *name, const char *value, int overwrite);
  5. //overwrite 参数表示,如果name存在,rewrite非0,则替换,如果为0则不设置新的value
  6. int putenv(char *string);

在CGI程序中,子进程通常需要设置环境变量:

  1. if(pid==0)
  2. {
  3. //...
  4. sprintf(meth_env, "REQUEST_METHOD=%s", req.methodString());
  5. sprintf(length_env, "CONTENT_LENGTH=%d", contentLengthValue);
  6. putenv(meth_env);
  7. putenv(length_env);
  8. //...
  9. }

下面一段代码测试功能:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <assert.h>
  4. int main()
  5. {
  6. const char * home="HOME";
  7. char *penv=getenv(home);
  8. char buf[128];
  9. sprintf(buf,"ZHANGXIAO=%s",penv);
  10. int ret=putenv(buf);
  11. assert(ret==0);
  12. penv=getenv("ZHANGXIAO");
  13. printf("%s\r\n",penv);
  14. ret = setenv("ZHANGXIAO","new value",0);
  15. assert(ret==0);
  16. penv=getenv("ZHANGXIAO");
  17. printf("%s\r\n",penv);
  18. ret = setenv("ZHANGXIAO","new value",1);
  19. assert(ret==0);
  20. penv=getenv("ZHANGXIAO");
  21. printf("%s\r\n",penv);
  22. return 0;
  23. }

输出结果:

  1. /home/zhangxiao
  2. /home/zhangxiao
  3. new velue

发表评论

表情:
评论列表 (有 0 条评论,348人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Linux进程简介

    在一台服务器上面看到有如下这么多类似的进程:     2 root      20   0     0    0    0 S    0  0.0   0:00.00 kth