如果父级不使用 Java 中的 stdout/stderr,为什么 process 会挂起?
我知道,如果你在Java中使用一个外部进程来启动一个外部进程,你必须使用它的stdout/stderr(例如,见这里)。否则,外部进程在启动时挂起。ProcessBuilder.start
我的问题是为什么它以这种方式工作。我的猜测是,JVM会将已执行进程的stdout/stderr重定向到管道,如果管道没有空间,则写入管道块。这有意义吗?
现在我想知道为什么Java会这样做。这种设计背后的基本原理是什么?