Code:execl("/usr/local/sbin/dmidecode", ">", "/usr/home/admin/info_sys.txt", NULL);
Ah non tu ne peux pas faire ça comme ça !
Explication : > est une redirection du shell, dmidecode ne sais pas gérer l'option ">" pas plus que "/usr/home/admin/info_sys.txt"
Alors comment faire ?
Les pipes !dmidecode ecrit sur la sortie standard, qui est un descripteur de fichier (1 )
il te faut donc faire une redirection de ta sortie standard vers un pipe ou un fichier (ça marche mais c'est moins beau.
Voici un exemple illustré de ls, c'est tout simple, on ne verifie même pas que ça marche et on ne contrôle pas les erreurs, mais c'est une bonne base.
Code:#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
int
main(void)
{
/* On ouvre un fichier */
int pfd = open("CON",O_WRONLY|O_CREAT|O_TRUNC,S_IRWXU);
/* On substitue STDOUT au descripteur de fichier */
dup2(pfd, STDOUT_FILENO);
/* On ferme FD dont on n'a plus besoin */
close(pfd);
/* On execute la commande */
execl("/bin/ls","ls",NULL);
/* On n'arrive là qu'en cas d'erreur */
return EXIT_SUCCESS;
}