N
none
Hello *,
I would like to parse in "real time" an output of a external program in
my Java application, but I only get the output of my program after
program termination.
Here is my code:
1 public class Main {
2 public static void main(String[] args) {
3 ProcessBuilder pb = new ProcessBuilder("/tmp/test.py");
4
5 try {
6 Process p = pb.start();
7 p = pb.start();
8
9 BufferedReader output = new BufferedReader(
10 new InputStreamReader(p.getInputStream()));
11 String line;
12
13 while ((line = output.readLine()) != null) {
14 System.out.println(line);
15 }
16
17 p.waitFor();
18 }
19 catch(Exception ex) {
20 ex.printStackTrace();
21 }
22 }
23}
In line 13 my application blocks til process termination of test.py and
afterwards I get all outputs of test.py and miss the intermediate steps...
Here my test program:
test.py:
1 #!/usr/bin/python
2 import time
3 cnt = 5
4 while cnt:
5 time.sleep(1)
6 print "progress"
7 cnt-=1
Every 1 second I should get "progress" into my application but it does
not seem do work.
I played around with streaming operations and Threads but without success.
Any help are welcome!
java version: Sun-Java 1.6.0u13 on Linux/i386
(same issue also on Open JDK Java 1.6.0_0-b12)
Nice greetings,
Harald
--
Harald Krammer
Brucknerstrasse 33
A - 4020 Linz
AUSTRIA
Mobil +43.(0) 664. 130 59 58
Mail: Harald.Krammer (at) hkr.at
I would like to parse in "real time" an output of a external program in
my Java application, but I only get the output of my program after
program termination.
Here is my code:
1 public class Main {
2 public static void main(String[] args) {
3 ProcessBuilder pb = new ProcessBuilder("/tmp/test.py");
4
5 try {
6 Process p = pb.start();
7 p = pb.start();
8
9 BufferedReader output = new BufferedReader(
10 new InputStreamReader(p.getInputStream()));
11 String line;
12
13 while ((line = output.readLine()) != null) {
14 System.out.println(line);
15 }
16
17 p.waitFor();
18 }
19 catch(Exception ex) {
20 ex.printStackTrace();
21 }
22 }
23}
In line 13 my application blocks til process termination of test.py and
afterwards I get all outputs of test.py and miss the intermediate steps...
Here my test program:
test.py:
1 #!/usr/bin/python
2 import time
3 cnt = 5
4 while cnt:
5 time.sleep(1)
6 print "progress"
7 cnt-=1
Every 1 second I should get "progress" into my application but it does
not seem do work.
I played around with streaming operations and Threads but without success.
Any help are welcome!
java version: Sun-Java 1.6.0u13 on Linux/i386
(same issue also on Open JDK Java 1.6.0_0-b12)
Nice greetings,
Harald
--
Harald Krammer
Brucknerstrasse 33
A - 4020 Linz
AUSTRIA
Mobil +43.(0) 664. 130 59 58
Mail: Harald.Krammer (at) hkr.at