Используйте класс Runtime для запуска Cygwin. Это очень хрупко и зависит от вашей настройки, но на моей машине я бы сделал:
Runtime r = Runtime.getRuntime();
Process p = r.exec("C:\\dev\\cygwin\\bin\\mintty.exe --exec /cygpath/to/foo.sh");
Затем дождитесь завершения процесса и получите дескриптор его объектов InputStream, чтобы увидеть, что было отправлено в stdout и stderror.
Первая часть команды - запустить cygwin, а вторая - выполнить какой-либо скрипт или команду (используя -e
или --exec
). Я бы протестировал эту команду в командной строке DOS, чтобы проверить, работает ли она в первую очередь, прежде чем вырезать какой-либо код. Кроме того, посмотрите на доступные варианты, выполнив:
C:\dev\cygwin\bin\mintty.exe --help
Также из командной строки DOS.
РЕДАКТИРОВАТЬ: Следующее работает для меня, чтобы напечатать информацию о версии
public class RuntimeFun {
public static void main(String[] args) throws Exception {
Runtime r = Runtime.getRuntime();
Process p = r.exec("C:\\dev\\cygwin\\bin\\mintty.exe --version");
p.waitFor();
BufferedReader buf = new BufferedReader(
new InputStreamReader(
p.getInputStream()));
String line = buf.readLine();
while (line != null) {
System.out.println(line);
line = buf.readLine();
}
}
}
К сожалению, не получается заставить его работать с --exec
, поэтому вам придется провести там еще какое-то исследование.