Comande system() et recuperation

Résolu
lapierrebikevt Messages postés 7 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 16 juillet 2010 - 26 oct. 2009 à 12:00
lapierrebikevt Messages postés 7 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 16 juillet 2010 - 26 oct. 2009 à 20:05
Bonjour à tous,

dans mon programme en C, j'utilise la fonction système() qui exécute un programme (Linux),
mais la plupart de programme renvoie des information, (exemple "sudo ggdssgsgu" => commande incorrect).
Comment récupéré ces ligne avec système , ou une commande alternative?

merci de votre aide
@+

5 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
26 oct. 2009 à 15:50
je précise : récupéré ces information dans une variable de type char


char * et non char, je suppose. Parce que char, c'est juste un caractère :p

Comment récupéré ces ligne avec système , ou une commande alternative ?


C'est pas simple, mais il faut que tu passes par des tubes nommées ("pipe" en anglais).
En gros tu exécutes la commande, en passant pas un pipe. Tu peux ensuite, lire ce qu'il y a dans le pipe, en temps réel.

Ex, avec la commande "uname -o":

#include <stdio.h>

int main()
{
  FILE * uname;
  char os[80];
  int lastchar;
  
  uname = popen("uname -o", "r");
  lastchar = fread(os, 1, 80, uname);
  os[lastchar] = '\0';
  printf("Your OS is %s", os);
  pclose(uname);
  return 0;
}
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
26 oct. 2009 à 15:54
A noter que dans le cas d'un programme qui renvoit plusieurs lignes, il faut que tu itères sur le résultat.

Ex:

FILE *fp = popen("myprog.exe", "r");
while (fgets(os, sizeof (char), fp) != NULL)
{
  // do stuff with lines (os)
}
pclose(fp);


Dernier truc: Sous windows, tu peux utiliser _popen, au lieu de popen.
3
lapierrebikevt Messages postés 7 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 16 juillet 2010
26 oct. 2009 à 12:01
je précise : récupéré ces information dans une variable de type char
0
lapierrebikevt Messages postés 7 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 16 juillet 2010
26 oct. 2009 à 20:00
merci , je teste ça , je te tient au courant
encore merci!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lapierrebikevt Messages postés 7 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 16 juillet 2010
26 oct. 2009 à 20:05
tout marche merci!!
0
Rejoignez-nous