Problème paramètre avec execv()
Bonjour ,
Si j'exécute le code suivant, pas de problèmes ...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <errno.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#define TRUE 1
#define FALSE 0
#define DEVICE "/dev/sda1"
#define FICHIER "diskspace.txt"
int main()
{
char * argument[] = {"ps","-a",NULL};
execv("/usr/bin/ps",argument);
exit(EXIT_SUCCESS);
} |
Cependant, à partir d'un tableau de pointeurs initialisés en NULL, je veux remplir ma commande, au fur et à mesure ,
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <errno.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#define TRUE 1
#define FALSE 0
#define DEVICE "/dev/sda1"
#define FICHIER "diskspace.txt"
int main()
{
char * argument[] = {NULL,NULL,NULL};
strcpy(argument[0],"ps");
strcpy (argument[1],"-al");
execv("/usr/bin/ps",argument);
exit(EXIT_SUCCESS);
} |
Les strcpy ne marchent pas et cela et bien embêtant car la commande système doit être paramètrable.
Comment faire ? ( avec la dernière ligne du tableau se terminant par le pointeur NULL )