【发布时间】:2018-01-30 07:14:29
【问题描述】:
假设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] 运行?
【问题讨论】:
-
如果
argv[0]是/bin/echo,你为什么要打扰execvp()?使用execv()会更明智。 -
因为阅读理解起来更清晰。此外,有两种不同的参数类型,因此不应将其合并为一种。