while ((line = reader.readLine()) != null) { System.out.println(line); }
При этом будет запущена команда Windows choice /C YN /M "Press Y if you're cool" и выдан ответ Y. Итак, результатом будет:
Press Y if you're cool [Y,N]?Y
Ответ 3
Чтобы избежать блокировки вызываемого процесса, если он выводит много данных на стандартный вывод и / или выдает ошибку, вы должны использовать решение, предоставленное Craigo. Обратите также внимание, что ProcessBuilder лучше, чем Runtime.getRuntime().exec(). Это по нескольким причинам: это лучше маркирует аргументы, а также устраняет стандартный вывод ошибок (проверьте также здесь).
Я использую новую функцию "watch" для сбора этих данных в новом потоке. Этот поток завершится в вызывающем процессе, когда завершится вызываемый процесс.