假设我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/