Bonjour,
voila j'ai un petit programme que je souhaite lancer avec une IHM. Seul pb il ne s'agit pas d'un ligne de commande mais d'une interface de dialogue.
Je pensais donc utiliser ce petit bout de code pour essayer de piper le sous process lancé mais dès que j'arrive à la lecture ça bloque. En revanche si j'enlève la partie pour envoyer des donnez au programme (du style je récupère simplement la sortie du commande, la ca ne bloque plus...je ne comprends rien) voici le code :
J'ai aussi tenté en séparant tout cela et en utilisant des threads -> même pb
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 try { Process p = Runtime.getRuntime().exec("./dial2"); /* Thread t1 = new write(p), t2 = new read(p); */ // Creation des flux BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream())); BufferedWriter stdOutput = new BufferedWriter(new OutputStreamWriter(p.getOutputStream())); BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream())); // read the output from the command int i = 0; while (i<100) { System.out.println("java -> " + i); st = ""+i; i++; // Envoie des donnees stdOutput.write(st, 0, st.length()); stdOutput.newLine(); stdOutput.flush(); // Reception System.out.print("C -> "); while ((s = stdInput.readLine()) != null) { System.out.println(s); } } System.exit(0); } catch (IOException e) { System.out.println("exception happened - here's what I know: "); e.printStackTrace(); System.exit(-1); }
merci pour votre aide
Partager