说我putenv
环境变量ABC,然后执行execl
,或者我做execle
并将ABC添加到我传递给{{1}的envp指针数组中}。
是否存在差异?
答案 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);
}
这不会打印任何内容,因为环境是空的。