我必须填写以下参数:
int execve(const char *filename, char *const argv[], char *const envp[]);
如果我执行这个程序:
#include <unistd.h>
int main() {
char *args[2];
args[0] = "/bin/sh";
args[1] = NULL;
execve(args[0], args, NULL);
}
外壳按预期正确生成。
我的问题是,如果我像这样将 NULL 作为第二个参数传递,shell 也会正确生成:
#include <unistd.h>
int main() {
char *args[2];
args[0] = "/bin/sh";
args[1] = NULL;
execve(args[0], NULL, NULL);
}
那么使用 args 向量(带有“/bin/sh”+ NULL)作为第二个参数而不是 NULL 的目的是什么?