一些实现提供了这些以下划线开头的函数(例如 _execl)。
每个的基数是 exec(执行),后跟一个或多个字母:
e – 一个指向环境变量的指针数组被显式传递给 >new 过程映像。
l – 命令行参数单独(一个列表)传递给函数。
p - 使用 PATH 环境变量查找要执行的文件 >argument 中命名的文件。
v – 命令行参数作为指针数组(向量)传递给函数。
在 execl、execlp、execv 和 execvp 调用中,新的进程映像继承了当前的环境变量。 (强调我的。)
所以你的怀疑是对的。
execve()是一个POSIX(和一般的UNIX系统)功能系列的exec*()功能,它取代了当前的过程映像.
它v来自这样一个事实:它对程序的参数argv向量进行了参数化(与mainC程序的函数可以采用相同的方式).
在e来自另一个的它的参数,envp,这是同样的环境变量(键/值对等的矢量LANG=en_US.UTF-8).
有关更多信息,请参阅Open Group的文档exec*().