[C]/[C++] Execution d'une commande externe

Fermé
wAx Messages postés 1596 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 21 novembre 2011 - 23 juil. 2003 à 10:26
dwyane346 Messages postés 147 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 6 septembre 2012 - 27 janv. 2010 à 20:33
Bonjour à tous

Je cherche à lancer une commande externe à partir d'un programme c/c++.

La commande system serait parfaite si ce n'est qu'elle s'execute directement dans la console où je lance mon programme. Je m'explique:
Si dans mon programme je fais
system("dir c:\");

L'excution du dir s'affiche en plein milieu de l'execution de mon programme et me parasite l'affichage

Ce que j'aimerais, ça serait de pouvoir faire un truc du genre:
mystring=system("dir");

Que le dir n'apparaisse pas et que je puisse le reccuperer pour le traiter dans mystring

Merci pour vos idées
A voir également:

7 réponses

wAx Messages postés 1596 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 21 novembre 2011 202
23 juil. 2003 à 11:05
Sisi, sous windows ça fonctionne
"dir > fichier.txt"
Et apres j'ouvre le fichier

Sinon, autre piste:
N'y a t'il pas moyen de rediriger le flux stdout non pas vers un fichier mais vers un autre flux ouvert pour le traiter directement ??
4
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
27 janv. 2010 à 19:08
Salut,

Il vaut mieux éviter la fonction system.
Sous Windows, tu peux utiliser les API Win32.
Tu initialises le répertoire FindFirstFile() et tu utilises une boucle sur FindNextFile(). Et pour fermer tu utilises FindClose().

https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-findfirstfilea?redirectedfrom=MSDN
https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-findnextfilea?redirectedfrom=MSDN
https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-findclose?redirectedfrom=MSDN

Avec l'argument de type WIN32_FIND_DATA qui est une structure, tu trouveras facilement le nom du fichier à chaque itération en pointant sur cFileName.

Si tu veux un petit exemple, n'hésite pas à demander.

Cdlt,
3
Baltawar Messages postés 470 Date d'inscription lundi 7 avril 2003 Statut Membre Dernière intervention 5 décembre 2003 10
23 juil. 2003 à 10:32
Salut wAx,

solution qui fonctionne sur Borland builder et Visual :

/* lance l'explorateur Windows */
ShellExecute ( NULL,"explore",".\\",NULL,NULL,SW_NORMAL);

/* ouvre le document */
ShellExecute
{NULL,"open","lisezmoi.htm",NULL,NULL,SW_NORMAL);

/* ouvre le repertoire contenant la documentation */
ShellExecute ( NULL,"open",".\\Docs",NULL,NULL,SW_NORMAL);

Voici quelques exemples ...

A+

Debout les crabes, la mer monte !
1
Baltawar Messages postés 470 Date d'inscription lundi 7 avril 2003 Statut Membre Dernière intervention 5 décembre 2003 10
23 juil. 2003 à 10:33
Petite précision :

inclure :

/* header file pour "SHELL EXE" */
#include <ShellApi.h>

La c'est bon je pense ....

re - A++

Debout les crabes, la mer monte !
0
wAx Messages postés 1596 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 21 novembre 2011 202
23 juil. 2003 à 10:41
Vi mais je vois pas où je reccupere ce qui est renvoyé par la commande externe

Bien entendu mon exemple de fonctionne pas mais ce que j'essayais de montrer, c'etait de reccuperer la sortie de la commande externe dans une chaine pour pouvoir la traiter ensuite.

J'ai bien conscience que ceci ne peut s'appliquer qu'à des commandes console car sinon je ne vais rien reccuperer mais cela correspond tout à fait à ce dont j'ai besoin
0
dommage que tu ne developpe pas sous Unix/Linux
il te suffisait de lancer system("ls * > fichier");
tu récupérerais ainsi le résultat de ta commande dans une fichier que tu pouvais traiter sous forme de chaine de caractere.

sinon sous wind.... bah je ne sais ....

A@++
0
Salut les gars!
je voudrais vous demandez deux choses! avec tout le respect que je vous dois voilà mes questions.
Qu'est-ce qu'une commande externe?
Qu'est-ce qu'une commande interne?
0
likoupha > franck
1 déc. 2008 à 18:00
donner moi la définition de commande interne et externe et six exemple de chaque
0

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

Posez votre question
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
23 juil. 2003 à 11:25
Hi,
popen sou Unix.
Sous win$ I don't know (et je veux pas savoir)

The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
0
je suis pas trés au point mais ca ressemble a un pipe non?
0
dwyane346 Messages postés 147 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 6 septembre 2012 18
27 janv. 2010 à 20:33
sois nunux cherche man exec
0