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 :
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);
      }
J'ai aussi tenté en séparant tout cela et en utilisant des threads -> même pb

merci pour votre aide