C语言 为什么 execvp 接受 2 个参数



假设 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]运行?

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

最新更新