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