Linux系统提供了environ指针,通过其可以查看在程序中访问环境变量,在使用environ之前需要提前声明:
extern char** environ;
main(){
char** env=environ;
while(*env){
printf("%s\n", *env++);
}
return;
}
运行结果是系统中的环境变量
execve可以为程序指定新的运行环境,execve所在的头文件在unistd.h中,其函数原型为:
int execve (const char *filename, char *const argv [], char*
const envp[]);
使用execve传递新的环境变量给执行好的二进制文件并且调用的代码为:
#include <unistd.h>
int main(){
char *argv[]={"showenv", NULL},
*envp[]={"foo=bar","bar=foo",NULL};
execve("./showenv", argv, envp);
perror("exeve failed");
return 0;
}
需要注意的是路径要使用双引号,单引号会导致错误识别。
使用步骤为
- 先生成首个程序中的二进制文件,如程序二中的showenv
- 生成第二个程序的二进制文件
- 执行execve程序
结果显示: