Pegando E/S padrão de programas executados com Runtime.exec

3 respostas
J

Pessoal,
estou usando o exec de Runtime para executar um programa comum (em perl) a partir de um prog Java. Ele roda bem, mas não consigo ver as mensagens enviadas para a saída padrão pelo programa.
Achei um código assim:

private void readOutputStream() 
    throws IOException
    {
        InputStreamReader isr = new InputStreamReader(procMonitored.getInputStream());
        BufferedReader outputReader = new BufferedReader(isr);
        String line;
        boolean first=true;
        while ((line = outputReader.readLine()) != null) {                     
            System.out.println(line);
        }
    }

onde “procMonitored” representa o processo que está executando o programa em perl (retornado pelo exec). Só que não funciona, e eu não entendo o porquê…
Dicas?
Eu queria mesmo algo tipo plug’n’play :lol: ou seja, eu esperaria ter um método para “plugar” ou redirecionar a saída do processo para a minha saída padrão… o mesmo para a entrada. (tipo um pipe).

3 Respostas

C

Dica:
Se nao me engano, in.readLine() só retorna qdo o sistema encontra um \n ou algo parecido, portanto talvez se vc usar in.read pode ser q funcione.

marcelo_emanoel

Ja tentou capturar o errorStream? pode estar dando algum erro e vc não está vendo… :slight_smile:

J

Mudei para read, lendo caracter por caracter, e mudei para errorStream, mas não colou. Continuo perdendo toda a saída do meu processo…

Criado 11 de abril de 2006
Ultima resposta 12 de abr. de 2006
Respostas 3
Participantes 3