代码之家  ›  专栏  ›  技术社区  ›  Priyank

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

  •  -1
  • Priyank  · 技术社区  · 7 年前

    说我 putenv 环境变量ABC,然后执行 execl ,或我执行 execle 并将ABC添加到我传递给的envp指针数组中 execle公司

    如果有的话,有区别吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Kevin    7 年前

    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);
    }
    

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