Redirection du flux de la commande system()

foufy68 Messages postés 1 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 10 septembre 2008 - 10 sept. 2008 à 11:08
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 19 nov. 2008 à 09:50
Bonjour à tous,
J'aimerai savoir s'il est possible de rediriger le flux de sortie de la commande "system" ( system("dir c:\\*.exe") par exemple)  vers une variable.
Je sais qu'il est possible de le rediriger vers un fichier texte de la manière suivante system("dir c:\\*.exe > Res.txt") mais pour des raisons de simplicité j'aimerai mettre le résultats de la recherche directement dans une variable , genre un tableau.

Est-ce que quelqu'un aurait une solution??

Merci d'avance.

5 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 sept. 2008 à 12:52
Salut,

Sous Windows, tu peux envoyer la sortie dans un pipe, et lire se pipe pour mettre son contenu dans une variable.

Exemple ici.

J'utilise CreateProcess à la place de system (C'est ce qui est fait en interne quand on utilise system sous Windows), et je précise que la sortie standard du processus créé doit se faire dans le pipe.

Quoiqu'il en soit, il est souvent préférable de se passer du DOS (Au moins du cmd /C quand c'est possible).
0
jdex Messages postés 11 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
18 nov. 2008 à 11:10
Je profite de ce post pour poser une question.. Je désire faire la même chose que lui mais je n'arrive pas à récupérer le flux au fur et a mesure. j'ai accès au flux uniquement à partir de la fin du programme lancé par create process... J'utilise des pipes anonyme plus un thread pour la lecture. Faut il utiliser des pipes nommés pour effectuer ce que je souhaite faire?
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
18 nov. 2008 à 11:26
Tu n'es pas obligé d'utiliser des pipes nommés.

Tu as regardé le lien que j'ai donné ?

C'est précisément de la récupération au fil de l'eau dont il est question.

Dans l'avant dernier post de la première page, il y a une application complète qui le fait.
0
jdex Messages postés 11 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
19 nov. 2008 à 09:30
En fait c'est mon programme marchait depuis le début. Sauf qu'il ne fonctionne pas avec tout les programmes. J'ai 2 programmes avec lesquel sa fonctionne du tonnerre et un autre ou je ne récupère la sortie qu'a la fin de ce dernier... Je ne comprend pas trop pourquoi. Petite description du programme qui ne fonctionne pas: Il lance une console ou utilise celle déjà lancée, puis affiche dans une fenêtre une image, on peut sélectionner une zone et en appuyant sur entrée, le nombre de zones et les coordonnées de celles - ci s'affiche sur la console.
0

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

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
19 nov. 2008 à 09:50
Ah...

Sinon il y a la solution du hook d'API.

Hooker WriteConsole, et WriteFilesi WriteConsole ne suffit pas.

Mais bon ça se codera pas en 2 secondes...
0
Rejoignez-nous