程序中获取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; |
程序中获取Shell进程环境变量值
最新推荐文章于 2024-11-21 15:22:16 发布