java.lang.Process.waitFor()挂起

时间:2010-10-05 15:47:42

标签: java

我正在尝试在挂起的Solaris上执行以下命令。

  

swmml -l /tmp/swmmlLog.txt -n N1 -e DISPLAY-M3UA-LSET;

     

; swmml - > perl脚本。

我试图清除流/关闭流。什么都行不通。我尝试了ProcessBBuilderRuntime.exec(),但没有成功。

我们试图从流中读取。但是read方法本身就是悬空。 以下代码不打印任何内容。

 while (true) {
     String s = br.readLine ();
     if (s == null) break;
     System.out.println (s);
 }

1 个答案:

答案 0 :(得分:8)

你说你正在刷新并关闭流,但你是否完全阅读标准输出和标准错误的内容?

一个常见的问题是子进程阻塞,因为当父Java进程忽略消耗其输出时,它的标准错误管道会填满。