假设我putenv环境变量ABC,然后执行execl,或者我执行execle,然后将ABC添加到传递给execle的指针的envp数组中。

有区别吗?

最佳答案

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

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

通过一个仅运行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);
}


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

关于c - 使用execle和putenv后跟execl有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50336288/

10-12 20:42