代码:
- #include <stdlib.h>
-
-
extern char **environ;
-
int main(int argc, char * argv[])
-
{
-
int i;
-
printf("\n--------------------------\n");
-
printf("argc:%d\n",argc);
-
for(i=0;i<argc;i++)
-
printf("argv[%d]:%s\n", argc, argv[i]);
-
-
for(i=0; environ[i] != NULL; i++)
-
printf("env[%d]:%s\n",i,environ[i]);
-
-
putenv("ENVTEST=4321");
-
printf("getenv ENVTEST:%s\n",getenv("ENVTEST"));
-
return 0;
-
}
运行结果:
--------------------------
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函数栈空间?此问题有待研究。
阅读(1357) | 评论(0) | 转发(0) |