Process.getInputStream immer leer

boehmi

Mitglied
Hallo,

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

Java:
        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: Process: getInputStream() : Processjava.langJava by API


Kennt einer ne Lösung?
Hab irgendwann mal gelesen, dass man die Prozess-Streambehandlung nur in einem extra Thread machen kann... kann mich aber nicht mehr genau erinnern.

Danke
 
jup, stderr lesen, rückgabewerte mal ausgeben lassen und am ende mal n einfaches System.out.println(); dranpacken um auch den lokalen puffer zu leeren.
 
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. -.-
 

Zurück
Oben