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?