OVH Cloud OVH Cloud

Stream d'erreur

2 réponses
Avatar
Alain ROUILLON
Salut,

Je cherche à récupérer le stream d'erreur d'un processus exécuté à partir
d'une commande DOS, pour avoir la totalité du message.

Comment m'y prendre ?

Al

2 réponses

Avatar
Farid
Salut,

Je cherche à récupérer le stream d'erreur d'un processus exécuté à partir
d'une commande DOS, pour avoir la totalité du message.

Comment m'y prendre ?

Al



regarde les methodes setErr(..) et setOut(..) de la class System

Farid.

Avatar
Cédric Chabanois
Ce n'est pas si simple que çà parceque si tu ne le lis pas au fur et à
mesure, le processus exécuté va se bloquer (enfin attendre en fait) si
le message de sortie est trop long (lorsque le buffer est plein)

Tu peux regarder les classes CommandLine.java et
CmdLineStreamPumper.java sur :
http://svn.collab.net/repos/subclipse/trunk/svnClientAdapter/src/main/org/tigris/subversion/svnclientadapter/commandline/

CmdLineStreamPumper est un thread qui permet de lire au fur et à mesure
(cette classe vient de ant)

Dans CommandLine, la partie intéressante est :

Process proc = execProcess(svnArguments);
CmdLineStreamPumper outPumper = new
CmdLineStreamPumper(proc.getInputStream(),coalesceLines);
CmdLineStreamPumper errPumper = new
CmdLineStreamPumper(proc.getErrorStream());

Thread threadOutPumper = new Thread(outPumper);
Thread threadErrPumper = new Thread(errPumper);
threadOutPumper.start();
threadErrPumper.start();
try {
outPumper.waitFor();
errPumper.waitFor();
} catch (InterruptedException e) {
}

String errMessage = errPumper.toString();


Cédric

Salut,

Je cherche à récupérer le stream d'erreur d'un processus exécuté à partir
d'une commande DOS, pour avoir la totalité du message.

Comment m'y prendre ?

Al