Bonjour à tous

J'ai une interface qui permet de faire des calculs de profils via un executable écrit en C. L'utilisateur à plusieurs possibilité de paramétrage pour faire le calcul mais au final les paramètres sont enregistrés dans un fichier temporaire qui est passé en paramètre à l'executable C. Une fois ce fichier rempli, je lance cet exécutable en utilisant un Process. L'exécution se fait dans la routine ci dessous


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
String[] args = { Parametrage.getInstance().getExecutable(), "-c",Parametrage.getInstance().getCheminResultatsIntermediaires() + "/profil.temp",Parametrage.getInstance().getCheminResultatsIntermediaires() + "/my.cfg" };
			ProcessBuilder pb = new ProcessBuilder(args);
			Process p = pb.start();
			InputStream is = p.getInputStream();
			InputStreamReader isr = new InputStreamReader(is);
			InputStream errSt=p.getErrorStream();
			InputStreamReader isErr = new InputStreamReader(errSt);
			BufferedReader br = new BufferedReader(isr);
			BufferedReader brErr = new BufferedReader(isErr);
			String ligne;
			System.out.println("--------------Debut calcul profil--------------");
			ligne=br.readLine();
			while (ligne != null) {
				System.out.println(ligne);
				ligne=br.readLine();
			}
			p.waitFor();
			ligne=br.readLine();
			while (ligne != null) {
				System.out.println(ligne);
				ligne=br.readLine();
			}
			System.out.println("--------------Fin calcul profil----------------");
			ligne=brErr.readLine();
			while (ligne != null) {
				System.out.println("ERREUR ("+ligne+")");
				ligne=br.readLine();
			}
			int res = p.exitValue();
			System.out.println(res);
			if (res == 0)
				afficherDernierProfil();
			else {
				JOptionPane.showMessageDialog(ModuleProfilFrame.this, Localisation.getText("ModuleProfil.ErreurCalcul"),
						Localisation.getText("ModuleProfil.Erreur"), JOptionPane.ERROR_MESSAGE);
			}
Malheureusement j'ai un cas ou il semble que l’exécutable ne se lance pas.

Y a t'il un moyen de savoir si la commande pb.start() a fonctionné ou non?

Précision le cas qui ne fonctionne pas est un cas ou avant de lancer cet exécutable j'en lance d'autre avant qui se terminent correcctement

Une idée