【发布时间】:2014-03-12 17:46:53
【问题描述】:
我正试图赶上Process 的输出,如下所示:
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();
正如我所见,当Process 正在运行ch == null 时,当Process 终止时,所有丢失的字符都会突然打印出来。
Process 运行期间如何读取输出?
【问题讨论】:
-
你需要一个线程来读取输出。
-
为什么?同样的情况是当我使用另一个线程来捕获输出时:p = builder.start(); StreamGobbler outputGobbler = new StreamGobbler(p.getInputStream()); outputGobbler.start();
-
是的。其中,outputGobbler 是一个线程。
标签: java python multithreading process py2exe