Pour simplifier les choses, j'ai modifié mon programme. Ce que je veux faire, c'est accepter n'importe quel nombre de paramètres pendant l'exécution et les passer à execlp()
. J'utilise un tableau 2d de longueur fixe m[][]
de manière à ce que tout emplacement inutilisé (restant) puisse être transmis en tant que NULL
a execlp
(dans ce cas m[2][]
).
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
int main() {
char m[3][5], name[25];
int i;
strcpy(name, "ls");
strcpy(m[0], "-t");
strcpy(m[1], "-l");
//To make a string appear as NULL (not just as an empty string)
for(i = 0; i < 5; i++)
m[2][i] = '\0'; // or m[2][i] = 0 (I've tried both)
execlp(name, m[0], m[1], m[2], '\0', 0, NULL);
// Does not execute because m[2] is not recognized as NULL
return 0;
}
Comment faire ?