Précisions sur la class Process et la méthode waitFor()
Bonjour,
Je souhaite lancer dans mon programme une application externe, et que le programme attende que celle ci se termine.
Je pensais avoir compris l'utilisation de la méthode waitFor() de la classe Process mais après quelques jours passés sur ce problème...
Citation:
Envoyé par Yann D'ISANTO, Developpez.com
" la méthode waitFor() met le thread courant en attente que le processus de l'application externe se termine "
Le bout de code que j'utilise est celui ci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
package fr.main;
import java.io.File;
import java.io.IOException;
public class Run
{
public static void runSimulation(String dataIn, String dataOut, String pathWorkSpace) throws InterruptedException
{
String []simu ={"C:\\Program Files\\MonAppli\\src\\appliExterne.exe", pathWorkSpace}; // pathWorkSpace est un paramètre du .exe
try
{
fr.utils.BufferedCopy.cp(dataIn,dataOut); // copie d'un fichier pour un paramètre du .exe
Process sim = Runtime.getRuntime().exec(simu);
sim.waitFor();
}
catch (IOException e)
{
System.err.println(e.getMessage());
}
}
} |
L'application externe le process "sim", dont l'exe prend en paramètre un espace de travail ainsi qu'un fichier que je crée lors de la copie (BufferedCopy.cp).
Après lancement du .exe, je devrais avoir un fichier de calcul en sortie. Néanmoins je constate que le calcul n'est pas terminé et étant donné que l'application externe fonctionne bien toute seule je soupçonne que mon programme n'attende pas que cette appli externe se termine. J'ai mis un sim.waitFor(); dans cette optique, pour que le programme attende que l'appli externe se termine pour poursuivre.
Est ce que lorsque j'ai codé :
Process sim = Runtime.getRuntime().exec(simu);
sim.waitFor();
Cela veut bien dire que le programme attend que le process sim se termine pour continuer ?
Merci par avance de votre aide !