通过execle 传递修改过的 environ

来源:互联网 发布:网络教育报名资料 编辑:程序博客网 时间:2024/05/17 07:57

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



原创粉丝点击