Разве запуск командного файла из Java-программы разрушает трубопровод? - PullRequest
0 голосов
/ 22 июня 2011

Я пытаюсь запустить командный файл из моей Java-программы, но у меня странное поведение.

Process p = Runtime.getRuntime().exec("cmd /c start temp.bat");

Обычно это работает нормально, но я обнаружил, что команды конвейеризациикомандный файл не будет работать.Есть предложения?

Ответы [ 3 ]

1 голос
/ 22 июня 2011

Я советую вам использовать CommonsExec, который сделает вашу жизнь намного проще. Вы можете использовать такой код (не проверено):

CommandLine cmdLine = new CommandLine("ping");
cmdLine.addArgument( host );

ByteArrayOutputStream stdout = new ByteArrayOutputStream();
PumpStreamHandler     psh    = new PumpStreamHandler( stdout );

DefaultExecutor executor = new DefaultExecutor(); 
executor.setStreamHandler( psh );

try {
  executor.execute( cmdLine );
} catch ( Exception e ) {
}

System.out.println( stdout.toString() );
0 голосов
/ 22 июня 2011

Используя объект Process, вы получаете getOutputStream () и getInputStream () для перенаправления ввода-вывода из процесса.

0 голосов
/ 22 июня 2011

Вы обрабатывали потоки из процесса?Если вы не читаете их - ваш процесс зависнет.

В чем ваша проблема?

РЕДАКТИРОВАТЬ: Может быть, этот ответ поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...