Когда я выполнить команду в отдельном процессе, например, с помощью Runtime.getRuntime().exec(...)
метода, чье JavaDoc состояния:Что делать с ненужными потоками из внешнего процесса?
Executes the specified command and arguments in a separate process.
Что мне нужно делать с потоками из этого процесса, зная, что этот процесс будет жить пока не существует Java-программа? (это деталь, но программа Java заботится об убийстве этого процесса, и сам процесс имеет встроенную защиту, где он убивает себя, если он заметит, что программа Java, которая породила его, больше не работает).
Если мы считаем, что этот процесс не производит никакого вывода (например, поскольку все сообщения об ошибках и stdout перенаправляются на/dev/null, и все коммуникации выполняются с использованием файлов/сокетов/что-то еще), что мне нужно сделать с входным потоком?
Должен ли я иметь один (или два?) Java-потока, запущенные ни для чего, пытаясь прочитать stdout/stderr?
Каков правильный способ справиться с долговременным внешним процессом, порожденным программой Java, которая вообще не создает stdout/stderr?
EDIT
В основном я обернуть скрипт в другом скрипте, который гарантирует, чтобы перенаправить все в /разработчика/нулевые. Я уверен, что мой Un * x будет несовместимым, если мой сценарий оболочки «outter» (тот, который перенаправляет все на/dev/null), все равно будет генерировать что-либо на stdout или stderr. Тем не менее, я нахожу, что это разумно, что я бы как-то предположил, что потоки выполняются в течение жизненного цикла приложения «ни для чего». На самом деле поражает ум.
Интересно. Я отредактирую свой вопрос ... В основном я завершаю скрипт оболочки в другом сценарии оболочки, который обязательно перенаправляет все на */dev/null *. Я уверен, что мой Un * x будет несовместимым, если мой сценарий оболочки «outter» (тот, который перенаправляет все на */dev/null *), все равно будет генерировать что-либо на * stdout * или * stderr *. – SyntaxT3rr0r
@ SyntaxT3rr0r - Я понимаю. Я всего лишь один из тех параноидных людей. :) Я согласен, что дополнительные потоки, вероятно, не нужны. – rfeak