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?