Capturer la sortie d'un exe console

cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 - 31 mars 2008 à 19:40
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 - 29 août 2008 à 16:31
Salut à tous et à toutes

je cherche un "capturer" la sortie d'un programme écrit en C dont le code est le suivant :

#include <stdio.h>

void main()
{
    printf("message..\n");

}

pour cela j'ai cherché sur le site s'il y a des sources ou discussion sur le sujet, jusqu'à trouvé cette source qui sert à lire du registre windows..

j'ai appliqué des petites modifications sur le code et ça marche

Voilà ce que j'ai fais :

import java.io.*;

class Tester {
    public static void main(String[] args) throws Exception {
        Process processus = Runtime.getRuntime().exec("programme.exe");
        StreamReader reader = new StreamReader(processus.getInputStream());
       
        reader.start();
        reader.join();
       
        String str = reader.getString();
        System.out.println(str);
    }
}

//parser du résultat
class StreamReader extends Thread {
    private InputStream is;
    private StringWriter sw;
   
    StreamReader(InputStream is) {
        this.is = is;
        sw = new StringWriter();
    }
 
    public void run() {
        try {
            int c;
            while ((c = is.read()) != -1)
                sw.write(c);
        } catch (IOException e) {
            ;
        }
    }
   
    public String getString() {
        return sw.toString();
    }
}

ma question : est-ce la meilleure façon ?

je pose cette question car les thèmes évoquées dans la source (Thread) je ne les ai pas abordé encore.. En plus il y a un seul commentaire sur la source ce qui ne m'a pas vraiment aidé..

Merci d'avance..

2 réponses

deemon Messages postés 13 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 24 février 2009
29 août 2008 à 16:23
Bonjour ChatBour,

Je pense que tu pourrais utiliser getOutputStream de la class Process que tu peux utiliser afin de rediriger le flux vers un fichier

java.lang.Process

getOutputStream()

J'ai rencontre le meme probleme en essayant de creer une interface graphique genre "cmd".

J'espere que ca va t'aider, bonne chance.

---------------------------------------------
un bon logiciel est un simple logiciel
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
29 août 2008 à 16:31
Salut,

merci pour la réponse

mon problème majeur est comment dialoguer avec un processus ?
par exemple comment communiquer avec la commande su du shell ? time ou date de DOS ?


_____________________
Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
0
Rejoignez-nous