Параметры 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?

Ответы на вопрос(2)

Ваш ответ на вопрос