Parámetros de C execve () [generan un ejemplo de shell]

Tengo que completar los parámetros para:

int execve(const char *filename, char *const argv[], char *const envp[]);

Si ejecuto este programa:

#include <unistd.h>
int main() {
        char *args[2];
        args[0] = "/bin/sh";
        args[1] = NULL;
        execve(args[0], args, NULL);
}

el shell se genera correctamente como se esperaba.

Mi problema es que el shell se genera correctamente también si paso un NULL como segundo parámetro como ese:

#include <unistd.h>

int main() {
        char *args[2];
        args[0] = "/bin/sh";
        args[1] = NULL;
        execve(args[0], NULL, NULL);
}

Entonces, ¿cuál es el propósito de usar el vector args (con "/ bin / sh" + NULL) como segundo parámetro en lugar de un NULL?

Respuestas a la pregunta(2)

Su respuesta a la pregunta