现在文件/root/Desktop/aa.c 如下:
1 #include <stdio.h>
2 extern char ** environ;
3 int main()
4 {
5 printf("HOME=%s\n",getenv("HOME"));
6 return 0;
7 }
#gcc aa.c -o a.out
# ./a.out
HOME=/root
新写一个程序如 execle.c
#include <stdio.h>
#include <unistd.h>#include <stdlib.h>
extern char **environ;
int main()
{
printf("HOME=%s\n", getenv("HOME"));
setenv("HOME", "hello", 1);
// printf("HOME=%s\n", getenv("HOME"));
execle("/root/Desktop/a.out","a.out",NULL,environ);
return 0;
}
#gcc execle.c -o exec
#./exec
HOME = hello
经上述认证,aa.c 中执行的,是execle.c中传过去的环境变量。
环境变量与execle函数
本文通过两个C程序示例,展示了如何使用execle函数来替换当前进程映像,并传递新的环境变量给被调用的程序。通过设置环境变量并使用execle函数执行另一个程序,验证了被调用程序能够获取到传递过来的环境变量。
5522

被折叠的 条评论
为什么被折叠?



