Построение конвейера процесса с помощью ProcessBuilder в Java 7 - PullRequest
8 голосов
/ 23 ноября 2011

Я пытался понять, как передать несколько процессов в Java, используя новый ProcessBuilder. Я не могу найти подходящий пример того, что я хочу сделать, и когда я пытаюсь сделать это сам, процесс просто зависает. Я был бы признателен за очень простой пример кода, который запускает эквивалент cat test.txt | wc, но не через оболочку.

- Обновление -

ОК, просто чтобы уточнить. Я знаю, что есть способы симулировать канал, читая и записывая потоки. Мне интересно, если это делается каким-то автоматическим способом с помощью методов redirectInput и redirectOutput , представленных в Java 7.

Ответы [ 2 ]

3 голосов
/ 23 ноября 2011

Запуск дочернего потока для каждой пары Input- / OutputStream с простым циклом копирования в run().

3 голосов
/ 23 ноября 2011

В этом случае вам не нужна труба.

"grep bla test.txt"

однако при условии, что вам нужна труба, вам нужно использовать оболочку типа bash

"/bin/bash", "-c", "grep foo text.txt | grep bar"
...