Параметры C execve () [порождают пример оболочки]
Я должен заполнить параметры для:
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 в качестве второго параметра, например:
#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?