Запуск bash с Java - PullRequest
       6

Запуск bash с Java

1 голос
/ 28 ноября 2011

Я хочу сделать что-то в этом духе.

    Process shell = Runtime.getRuntime().exec("/bin/bash");

Тогда я хочу использовать потоки для процесса оболочки, чтобы общаться с оболочкой bash. Однако, похоже, это совсем не работает, и это меня совершенно ошарашивает.

Я нашел эту ссылку , которая, кажется, говорит об этой же проблеме. Почему именно это происходит и есть ли лучшие решения, чем указано в ссылке?

1 Ответ

2 голосов
/ 28 ноября 2011

Может потребоваться сбросить записи из JVM в дочерний процесс, чтобы убедиться, что он получает свои входные данные.IIRC Мне не нужно было делать это на Windows, но на Linux.Я также столкнулся с проблемами, когда мне пришлось заставить дочерний процесс сбрасывать записи, чтобы JVM тоже сразу их видела.

Кроме того, убедитесь, что потоки JVM читают из stdout и stderr, прежде чем что-либо делать.Если любой из этих буферов заполняется, он может заблокировать процесс.Это огромная проблема в Windows.Вам понадобится только один поток, если вы используете опции для объединения потоков при запуске процесса.

Кроме того, в вашем примере (выше) нет новой строки, не будет ли bash требовать ее?например, "touch blah \ n"

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