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