您的位置:首页 > 运维架构 > Shell

程序中获取Shell进程环境变量值

2011-08-03 21:34 405 查看
程序中获取Shell进程环境变量值
来源: ChinaUnix博客  日期: 2007.09.19 09:20 (共有0条评论)
我要评论
1. get all

进程的环境是一个以NULL字符结尾的字符串之集合。如:

name=something

Linux系统提供了environ指针来访问其变量内容。

如下程序showenv.c演示了通过environ指针变量访问环境变量:

extern char** environ;

main()

{

char** env=environ;

while(*env)

{

printf("%s\n",*env++);

}

return;

}

2. add

为进程指定新的环境,需:execle()和execve() [in ]

如下程序addenv.c 演示了把新的环境传给上面的showenv.c:

#include

main()

{

char *argv[]={"showenv.x",NULL},

*envp[]={"nick=home","home=nick",NULL};

execve("../exe/showenv.x",argv,envp);

perror("exeve failed");

return;

}

结果:

nick=home

home=nick

其实,Linux系统库stdlib.h提供了putenv(),它完成与addenv同样的工作。方法为:putenv("newvariable=value");如成功返回0。它只改变调用进程的环境变量,父进程不变。

3 get one or find someone

findenv()根据给的name扫描环境内容,找出“name=something”这种形式的字符串。

/*找不到则返回NULL*/

extern char** environ;

char* findenv(char* name)

{

int len;

char *p;

for(p=environ; *p; p++)

{

if( (len=pcmp(name,*p))>=0 && *(*(p+1))=='=' )

return *(p+1+1);

}

return NULL;

}

int pcmp(char* s1,char* s2)

{

int i=0;

while(*s1)

{

i++;

if(*s1++!=*s2++)

return -1;

}

return i;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: