Comment lancer un programme ou un script depuis une application en Java qui
tourne sous XP ?
Est-il possible de récupérer la valeur de retour de ce programme (chaine de
caractère ou entier) qui tourne en mode console ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pif
Comment lancer un programme ou un script depuis une application en Java qui tourne sous XP ? Est-il possible de récupérer la valeur de retour de ce programme (chaine de caractère ou entier) qui tourne en mode console ?
heu :
pour exécuter : classe Runtime.exec()
ensuite, pour récupérer les messages de sortie, a toi de rediriger la sortie standard sous forme d'un pipe, un peu comme pour les unix ( ex : "dir > monfichier.txt" )
Comment lancer un programme ou un script depuis une application en Java qui
tourne sous XP ?
Est-il possible de récupérer la valeur de retour de ce programme (chaine de
caractère ou entier) qui tourne en mode console ?
heu :
pour exécuter : classe Runtime.exec()
ensuite, pour récupérer les messages de sortie, a toi de rediriger la
sortie standard sous forme d'un pipe, un peu comme pour les unix ( ex :
"dir > monfichier.txt" )
Comment lancer un programme ou un script depuis une application en Java qui tourne sous XP ? Est-il possible de récupérer la valeur de retour de ce programme (chaine de caractère ou entier) qui tourne en mode console ?
heu :
pour exécuter : classe Runtime.exec()
ensuite, pour récupérer les messages de sortie, a toi de rediriger la sortie standard sous forme d'un pipe, un peu comme pour les unix ( ex : "dir > monfichier.txt" )
LR
Comment lancer un programme ou un script depuis une application en Java qui tourne sous XP ? Est-il possible de récupérer la valeur de retour de ce programme (chaine de caractère ou entier) qui tourne en mode console ?
Runtime.exec te retoune un Process. Ensuite tu peux avoir le code de retour par la méthode exitValue A+Lilian
Comment lancer un programme ou un script depuis une application en Java
qui tourne sous XP ?
Est-il possible de récupérer la valeur de retour de ce programme (chaine
de caractère ou entier) qui tourne en mode console ?
Runtime.exec te retoune un Process. Ensuite tu peux avoir le code de retour
par la méthode exitValue
A+Lilian
Comment lancer un programme ou un script depuis une application en Java qui tourne sous XP ? Est-il possible de récupérer la valeur de retour de ce programme (chaine de caractère ou entier) qui tourne en mode console ?
Runtime.exec te retoune un Process. Ensuite tu peux avoir le code de retour par la méthode exitValue A+Lilian
Comment lancer un programme ou un script depuis une application en Java qui tourne sous XP ? Est-il possible de récupérer la valeur de retour de ce programme (chaine de caractère ou entier) qui tourne en mode console ?
Voici un exemple de code qui appelle la commande mysqldump :
File fout = new File("toto"); FileWriter fw = new FileWriter(fout);
System.out.println("debut ..."); Process pro = Runtime.getRuntime().exec("c:/mysql/bin/mysqldump test");
InputStream out = pro.getInputStream();
StringBuffer sb = new StringBuffer();
int i = out.read(); while ( i != -1 ) { sb.append((char)i); i = out.read(); } fw.write(sb.toString()); out.close(); fw.close();
InputStream err = pro.getErrorStream(); StringBuffer sberr = new StringBuffer(); int j = err.read(); while ( j != -1 ) { sberr.append((char)j); j = err.read(); } err.close();
pro.waitFor(); if (pro.exitValue() != 0) { System.out.println(sberr.toString()); }
Sylvain Pons wrote:
Comment lancer un programme ou un script depuis une application en Java
qui tourne sous XP ?
Est-il possible de récupérer la valeur de retour de ce programme (chaine
de caractère ou entier) qui tourne en mode console ?
Voici un exemple de code qui appelle la commande mysqldump :
File fout = new File("toto");
FileWriter fw = new FileWriter(fout);
System.out.println("debut ...");
Process pro = Runtime.getRuntime().exec("c:/mysql/bin/mysqldump test");
InputStream out = pro.getInputStream();
StringBuffer sb = new StringBuffer();
int i = out.read();
while ( i != -1 )
{
sb.append((char)i);
i = out.read();
}
fw.write(sb.toString());
out.close();
fw.close();
InputStream err = pro.getErrorStream();
StringBuffer sberr = new StringBuffer();
int j = err.read();
while ( j != -1 )
{
sberr.append((char)j);
j = err.read();
}
err.close();
pro.waitFor();
if (pro.exitValue() != 0) {
System.out.println(sberr.toString());
}
Comment lancer un programme ou un script depuis une application en Java qui tourne sous XP ? Est-il possible de récupérer la valeur de retour de ce programme (chaine de caractère ou entier) qui tourne en mode console ?
Voici un exemple de code qui appelle la commande mysqldump :
File fout = new File("toto"); FileWriter fw = new FileWriter(fout);
System.out.println("debut ..."); Process pro = Runtime.getRuntime().exec("c:/mysql/bin/mysqldump test");
InputStream out = pro.getInputStream();
StringBuffer sb = new StringBuffer();
int i = out.read(); while ( i != -1 ) { sb.append((char)i); i = out.read(); } fw.write(sb.toString()); out.close(); fw.close();
InputStream err = pro.getErrorStream(); StringBuffer sberr = new StringBuffer(); int j = err.read(); while ( j != -1 ) { sberr.append((char)j); j = err.read(); } err.close();
pro.waitFor(); if (pro.exitValue() != 0) { System.out.println(sberr.toString()); }
Trognon Patrice
Rémi Cocula wrote:
Sylvain Pons wrote:
Comment lancer un programme ou un script depuis une application en Java qui tourne sous XP ? Est-il possible de récupérer la valeur de retour de ce programme (chaine de caractère ou entier) qui tourne en mode console ?
Voici un exemple de code qui appelle la commande mysqldump :
File fout = new File("toto"); FileWriter fw = new FileWriter(fout);
System.out.println("debut ..."); Process pro = Runtime.getRuntime().exec("c:/mysql/bin/mysqldump test");
InputStream out = pro.getInputStream();
StringBuffer sb = new StringBuffer();
int i = out.read(); while ( i != -1 ) { sb.append((char)i); i = out.read(); } fw.write(sb.toString()); out.close(); fw.close();
InputStream err = pro.getErrorStream(); StringBuffer sberr = new StringBuffer(); int j = err.read(); while ( j != -1 ) { sberr.append((char)j); j = err.read(); } err.close();
pro.waitFor(); if (pro.exitValue() != 0) { System.out.println(sberr.toString()); }
Bonjour,
En effet exec puis lecture de out et err sinon le programme lancé va se bloquer. Par contre il me semble mieux de lire les flux out et err dans un autre thread, le thread principale ne faisant que le pro.waitFor(); Perso j'ai un thread qui fait ta boucle : int j = err.read(); while ( j != -1 ) { sberr.append((char)j); j = err.read(); } err.close(); Mon thread principale lance le exec, puis lance un thread pour flusher le out, un autre thread pour flusher le err, et elle fait le waitFor().
-- Cordialement,
Patrice Trognon http://wwW.javadevel.com
Rémi Cocula wrote:
Sylvain Pons wrote:
Comment lancer un programme ou un script depuis une application en Java
qui tourne sous XP ?
Est-il possible de récupérer la valeur de retour de ce programme (chaine
de caractère ou entier) qui tourne en mode console ?
Voici un exemple de code qui appelle la commande mysqldump :
File fout = new File("toto");
FileWriter fw = new FileWriter(fout);
System.out.println("debut ...");
Process pro = Runtime.getRuntime().exec("c:/mysql/bin/mysqldump test");
InputStream out = pro.getInputStream();
StringBuffer sb = new StringBuffer();
int i = out.read();
while ( i != -1 )
{
sb.append((char)i);
i = out.read();
}
fw.write(sb.toString());
out.close();
fw.close();
InputStream err = pro.getErrorStream();
StringBuffer sberr = new StringBuffer();
int j = err.read();
while ( j != -1 )
{
sberr.append((char)j);
j = err.read();
}
err.close();
pro.waitFor();
if (pro.exitValue() != 0) {
System.out.println(sberr.toString());
}
Bonjour,
En effet exec puis lecture de out et err sinon le programme lancé
va se bloquer.
Par contre il me semble mieux de lire les flux out et err dans
un autre thread, le thread principale ne faisant que le pro.waitFor();
Perso j'ai un thread qui fait ta boucle :
int j = err.read();
while ( j != -1 ) {
sberr.append((char)j);
j = err.read();
}
err.close();
Mon thread principale lance le exec, puis lance un thread pour flusher
le out, un autre thread pour flusher le err, et elle fait le waitFor().
Comment lancer un programme ou un script depuis une application en Java qui tourne sous XP ? Est-il possible de récupérer la valeur de retour de ce programme (chaine de caractère ou entier) qui tourne en mode console ?
Voici un exemple de code qui appelle la commande mysqldump :
File fout = new File("toto"); FileWriter fw = new FileWriter(fout);
System.out.println("debut ..."); Process pro = Runtime.getRuntime().exec("c:/mysql/bin/mysqldump test");
InputStream out = pro.getInputStream();
StringBuffer sb = new StringBuffer();
int i = out.read(); while ( i != -1 ) { sb.append((char)i); i = out.read(); } fw.write(sb.toString()); out.close(); fw.close();
InputStream err = pro.getErrorStream(); StringBuffer sberr = new StringBuffer(); int j = err.read(); while ( j != -1 ) { sberr.append((char)j); j = err.read(); } err.close();
pro.waitFor(); if (pro.exitValue() != 0) { System.out.println(sberr.toString()); }
Bonjour,
En effet exec puis lecture de out et err sinon le programme lancé va se bloquer. Par contre il me semble mieux de lire les flux out et err dans un autre thread, le thread principale ne faisant que le pro.waitFor(); Perso j'ai un thread qui fait ta boucle : int j = err.read(); while ( j != -1 ) { sberr.append((char)j); j = err.read(); } err.close(); Mon thread principale lance le exec, puis lance un thread pour flusher le out, un autre thread pour flusher le err, et elle fait le waitFor().