【发布时间】:2016-01-13 14:13:44
【问题描述】:
如果我从 bash 编译并运行以下 Java 程序:
public class BashSuspend {
public static void main(String[] args) throws Exception {
Process process = new ProcessBuilder("bash -i -c ls".split(" "))
.redirectInput(ProcessBuilder.Redirect.INHERIT)
.redirectOutput(ProcessBuilder.Redirect.INHERIT)
.redirectError(ProcessBuilder.Redirect.INHERIT).start();
process.waitFor();
System.in.read();
}
}
我看到一些奇怪的行为:
matt@Overmind:~/bash-suspend$ java BashSuspend
BashSuspend.class BashSuspend.java
[1]+ Stopped java BashSuspend
matt@Overmind:~/bash-suspend$
为什么 Java 进程在将 bash 作为子进程运行后会挂起?
(我在 Ubuntu 15.10 上运行 openjdk 版本“1.8.0_66-internal”。)
【问题讨论】: