为什么 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
。
假设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
。