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

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

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

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

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

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