У меня есть процесс Java, который запускает программу, используя Runtime.getRuntime (). Exec ("myBin")
этот «myBin» может несколько раз завершить свою работу.
У меня есть поток чтения, чтобы прочитать все выходные данные myBin и его дочерних элементов из InputStream и ErrorStream объекта Process, возвращенного exec ()
Мой вопрос: если для завершения работы требуется слишком много времени, мне нужно завершить процесс и дождаться завершения потока чтения (поток чтения завершится, если он прочитал EOF)
Теперь я обнаружил, что даже если я использую Process.Destroy (), я могу убить только "myBin", внутри себя и всех его потомков. Таким образом, после тайм-аута EOF никогда не достигался, поэтому поток считывателя зависал, пока все дочерние процессы не были остановлены ...
Есть ли способ безопасного уничтожения процесса, и все дочерние процессы запущены Runtime.exec ()
Я нахожусь в Linux, я не думаю о кроссплатформенности.