[C] Lancer une commande cmd

Fermé
Rem's Messages postés 64 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 8 mai 2007 - 19 nov. 2004 à 00:35
 dahoo - 30 juil. 2008 à 14:23
Bonjour,

Je cherche à coder un petit programme en C qui va executer une commande cmd de type dir, puis récupérer pour l'analyser ce que renvoie la commande. Ici, la liste du répertoire par exemple.

J'avais pensé à shellexecute, mais en fait aparemment ça se contente de lancer la commande dans une fenêtre dos sans rien récupérer...

La je seche, donc si vous avez une idée, je suis preneur.

Merci :)

5 réponses

blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 160
19 nov. 2004 à 15:16
salut!
pour la commande dir, on peut faire quelque chose

#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
 void scandir(char *dirname)
{
   DIR *dir;
   struct dirent *ent;
 
   printf("premier passage dans '%s':\n",dirname);
   if ((dir = opendir(dirname)) == NULL)
   {
     perror("impossible d'ouvrir le répertoire");
     exit(1);
   }
   while ((ent = readdir(dir)) != NULL)
     printf("%s\n",ent->d_name);
 
   printf("deuxième passage dans '%s':\n",dirname);

   rewinddir(dir);
   while ((ent = readdir(dir)) != NULL)
     printf("%s\n",ent->d_name);
   if (closedir(dir) != 0)
     perror("impossible de fermer le répertoire");
}
 


(j'ai trouvé ça dans borland)
sinon, malheureusement c'est du cas par cas
on peut récupérer les variables d'environement avec

char *getenv(const char *name);



Sous unix / linux il y a plein d'astuces pour récupérer les infos du système.
sous windows, c'est une galère.

cordialement

¤
3
Rem's Messages postés 64 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 8 mai 2007 27
21 nov. 2004 à 17:49
Yes, merci ça marche mais en fait, ce que je voudrais faire exactement c'est pouvoir rediriger la réponse à une commande cmd (dir net ou autre) dans une variable pour pouvoir traiter ensuite la réponse...

Je suis pas sur qu'on puisse le faire avec shellexecute, si vous avez une autre idée...
0
Salut!

En traitant le flux de sortie stdout non?

Du genre:

#include <stdio.h>

system("dir");

/* traitement */


Je dis peut être une bétise. :-P
0
Comme GUKI
Je suis d'accord et le mieux est de créer un fichier :

system("dir > FIC.dat");

/* et voilà y a plus qu'à lire FIC.DAT */

A+
Nico.
0
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 160
21 nov. 2004 à 18:59
system ("dir") va effectivement lancer la commande dir, mais dans une fenêtre, et tu ne pourra rien récupérer à part 0 si ça s'est bien passé, sinon un code d'erreur.
tout ce qui passe par cmd.exe (ou command.com sous win9x)
va ouvrir une fenêtre "dos" (ou console si WIN>=2000)
et ça ne communique pas avec le prog.
voilà pour quoi chaque commande système nécessite plus ou moins une fonction spécifique
¤
0
Pour afficher dans la console il faut bien écrire dans le flux de sortie stdout non?
0
Rem's Messages postés 64 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 8 mai 2007 27
21 nov. 2004 à 20:28
Merci, en fait j'ai trouvé sur msdn tout ce dont j'avais besoin. Ca devrait rouler maintenant :)
0
Salut, j'ai exactement le même problème que tu viens de résoudre. Tu peux expliquer comment tu as fait s'il te plait?

Merci,

David.
0

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

Posez votre question
bonjour,
je suis debutant et voudrais savoir si c'est possible d'executer un fichier.sh sous windows.
merci
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
22 avril 2008 à 10:02
c'est possible, il faut téléchargé cygwin par exemple.
0