现在文件/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中传过去的环境变量。