Почему процесс зависает, если родитель не использует stdout / stderr в Java?

Я знаю, что если вы используетеProcessBuilder.start в Java для запуска внешнего процесса выдолжен потреблять его stdout / stderr (например, см.Вот). В противном случае внешний процесс зависает при запуске.

Мой вопросЗачем это работает таким образом. Я предполагаю, что JVM перенаправляет stdout / stderr выполненного процесса в каналы, и если каналы не имеют места, записи в блок каналов. Имеет ли это смысл?

Теперь интересноЗачем Ява делает это так. Каково обоснование этого дизайна?

Ответы на вопрос(2)

Ваш ответ на вопрос