Process.waitFor()
блокирует текущий поток до завершения процесса, после чего управление выполнением возвращается к потоку, который породил процесс.
В опубликованном коде после завершения процесса (т. Е. После вызова Process.waitFor) входной поток завершенного в настоящее время процесса больше не имеет данных, которые можно прочитать. Поэтому чтение содержимого потока и его распечатка не приведет к каким-либо ощутимым данным.
Если вам нужно прочитать содержимое потока, вам нужно создать новый поток, который позаботится о необходимых операциях чтения входного потока и записи в выходной поток по мере необходимости, прежде чем дочерний процесс завершится .
Или вы можете выполнять чтение и запись в одном и том же потоке, но перед тем, как дождаться завершения дочернего процесса. Другими словами, вам нужно переключить последовательность строк, содержащих pr.waitFor();
, и строк, которые читаются из InputStream.
Схожий вопрос по SO:
- Process.waitFor (), потоки и InputStreams