使用execle和putenv后跟execl有什么区别?

时间:2018-05-14 17:53:29

标签: c linux unix

说我putenv环境变量ABC,然后执行execl,或者我做execle并将ABC添加到我传递给{{1}的envp指针数组中}。

是否存在差异?

1 个答案:

答案 0 :(得分:2)

putenv将环境变量添加到当前环境中。然后使用execl将使用该环境。

execle将使用environment参数作为整个环境,即它不会继承现有的环境变量。

很容易看到一个只运行env的简单程序(打印出当前环境):

#include <unistd.h>

int main()
{
    execl("/bin/env", "/bin/env", NULL);
}

在我的机器上运行它会打印出许多环境变量,例如HOME等。

#include <unistd.h>

int main()
{
    char* env[] = { NULL };
    execle("/bin/env", "/bin/env", NULL, env);
}

这不会打印任何内容,因为环境是空的。