Runtime.exec (): cygwin vs Linux
Убил несколько часов на разбирательство с простым на первый взгляд кодом:
String command = "bash -c 'ls > ls.txt'"; Process p = Runtime.getRuntime().exec( command, null, null );
С cygwin всё работает как надо: создается файл ls.txt с результатами работы ls.
Зато под Linux происходит странное:
>: -c: line 0: unexpected EOF while looking for matching `'' >: -c: line 1: syntax error: unexpected end of file
Полный откомпилированный пример здесь. Можете запустить командой 'java ExecRedirect' на своей системе.
Ну что, рассказать решение или сами подумаете?
Нечасто приходится использовать Runtime.exec (), пришлось поизучать материальную часть: When Runtime.exec () won't.
Runtime.exec () не умеет правильно парсить команды с редиректом. Сделаем это за нее:
Process p = Runtime.getRuntime().exec ( new String[]{"bash","-c","ls > a.txt"}, null, null );
23.10.2007
Метки: cygwin, Java, Linux Рубрики: Разработка
ЖЖ
Написать комментарий