Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145550
  • 博文数量: 26
  • 博客积分: 645
  • 博客等级: 上士
  • 技术积分: 340
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-05 15:00
文章分类

全部博文(26)

文章存档

2014年(1)

2013年(1)

2011年(22)

2010年(1)

2009年(1)

我的朋友

分类: LINUX

2011-07-11 20:38:16

代码:
  1. #include <stdlib.h>

  2. extern char **environ;
  3. int main(int argc, char * argv[])
  4. {
  5.     int i;
  6.     printf("\n--------------------------\n");
  7.     printf("argc:%d\n",argc);
  8.     for(i=0;i<argc;i++)
  9.        printf("argv[%d]:%s\n", argc, argv[i]);

  10.     for(i=0; environ[i] != NULL; i++)
  11.         printf("env[%d]:%s\n",i,environ[i]);

  12.     putenv("ENVTEST=4321");
  13.     printf("getenv ENVTEST:%s\n",getenv("ENVTEST"));
  14.     return 0;
  15. }

运行结果:
--------------------------
argc:1
argv[1]:./environ
env[0]:ORBIT_SOCKETDIR=/tmp/orbit-lisong
env[1]:SSH_AGENT_PID=1192
env[2]:TERM=xterm
env[3]:SHELL=/bin/bash
……
……
getenv ENVTEST:4321

《Unix环境高级编程》中说,不可以在程序中随便增加环境变量,环境变量在进程内存空间中的空间有限,增加时需要从堆中重新申请一片空间,把原先的环境变量复制进去,再在其基础上增加。但实验中未出现问题,莫非覆盖了main函数栈空间?此问题有待研究。
阅读(1332) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~