C execve () Parameter [ein Shell-Beispiel erzeugen]

Ich muss die Parameter ausfüllen für:

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

Wenn ich dieses Programm ausführe:

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

die Shell wird wie erwartet korrekt erzeugt.

Mein Problem ist, dass die Shell auch dann korrekt erzeugt wird, wenn ich als zweiten Parameter NULL übergebe:

#include <unistd.h>

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

So was ist der Zweck, den args-Vektor (mit dem "/ bin / sh" + NULL) als zweiten Parameter anstelle eines NULL zu verwenden?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage