为什么 execvp 接受 2 个参数

Why execvp accepts 2 arguments

假设c中有以下代码:

#include <unistd.h>
#include <stdlib.h>

int main(int argc, char * argv[]) {
  char *args[] = {"/bin/echo", "1", NULL};
  execvp(args[0], args);
}

为什么 execvp 接受 2 个参数?为什么它不能是 execvp(args) 并且在内部它会自动将可执行文件从 args[0] 抓取到 运行?

如果您希望进程的 "name"(在您的情况下为 args[0])与实际的可执行程序不同怎么办?这是一个有效的用例,处理这两种情况的最简单解决方案是我们现在拥有的双参数 execvp