Impossible de lire InputStream de Processus Java (Runtime.getRuntime().exec() ou ProcessBuilder)

Je suis en train de commencer un processus externe avec Java et ne peut pas lire quoi que ce soit à partir de son InputStream.

Si je suis au début d'un processus avec des commandes comme "ls", "ps" ou "tuer" tout fonctionne bien. Je peux commencer le processus et d'obtenir des informations sur l'InputStream ou la ErrorStream du Processus.

Si j'essaie d'utiliser la commande "ftp" ou "telnet" les deux InputStream et ErrorStream sont le blocage de mon programme lorsque vous essayez de lire. Aucune information n'est transmise par le biais de ces cours d'eau à tout moment.

Quelqu'un peut-il expliquer le comportement? Est-il tout simplement pas possible avec ces commandes, ou dois-je avoir un problème avec mon application?

     String processName = _configuration.getProgramCommand().getCommand();
   ProcessBuilder procBuilder = new ProcessBuilder(processName);   

   System.out.println("Starting process "+processName);   
   _proc = Runtime.getRuntime().exec(processName);//procBuilder.start();            

   if(!procBuilder.redirectErrorStream()) {    
    _errorWorker = new ProcessErrorWorker(_proc);
    _errorWorker.start();   
   }

   String proc_start_answer = _configuration.getNextCommand().getCommand();
   System.out.println("Waiting for process answer '"+proc_start_answer+"'");
   BufferedReader input = new BufferedReader(new InputStreamReader(_proc.getInputStream()));      

   String answer = "";  

   try {         
    System.out.println("inputstream ready: "+input.ready());
    answer+=input.readLine(); 
    System.out.println("process answer:  "+answer);
    input.close();        

   } catch(Exception e) {
    System.out.print(e.getMessage());     
   } 
  • Avez-vous obtenir ce problème résolu ? Vous pouvez poster dans la solution ?
InformationsquelleAutor msg | 2010-07-01