假设 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
。