I am trying to catch on fly Process output like below: 
new Thread() {
    public void run() {
        final ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "myexec.exe");
        p = builder.start();
        InputStream i = p.getInputStream();
        Reader r = new InputStreamReader(i, "US-ASCII");
        int ch = 32;
        do {
           System.out.print(ch);
        } while ((ch = r.read()) != -1);
    }
}.start();
As I see, while Process is running ch == null, when Process is terminated all missing chars are suddenly printed.
How can I read output during Process running?
 
     
    