[Java] Process.getInputStream immer leer

boehmi

New member
Hallo,

ich erzeuge in Java einen Prozess, welcher auf stdout (c-printf) Daten ausgibt.
Diese Daten möchte ich nun lesen.
Allerdings kommt in meinem Javaprogramm nichts an. Woran liegt das?

Code:
        Process process = null;
        ProcessBuilder pb = new ProcessBuilder(..pfad..);
        try {
            process = pb.start();
            System.out.println("Process started");
        } catch (IOException e) {
            System.out.println("Could not start process");
            System.exit(1);
        }
        
        inStream = process.getErrorStream();
        stdout = process.getInputStream();

    
        int b;
        try {
            while((b = stdout.read()) != -1) {
                System.out.print((char)b);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
Dieses Beispiel geht auch nicht: http://www.java2s.com/Code/JavaAPI/java.lang/ProcessgetInputStream.htm


Kennt einer ne Lösung?
Hab irgendwann mal gelesen, dass man die Prozess-Streambehandlung nur in einem extra Thread machen kann... stimmt das?

Danke
 

odigo

Member of Honour
Lass dir doch mal den ErrorStream ausgeben. Kommt das was an?
 

boehmi

New member
Hat sich gerade geklärt... das Problem ist, dass die Streams in C bei printf nicht automatisch geflusht werden.
Mit einem fflush(stdout) nach jedem printf funktionierts.
 
Oben