Запуск внешней программы (Сиеста) по Java
Я проверил много тем о запуске внешних программ, но они не могут решить мою проблему. для запуска Siesta (DFT Calculation) я должен использовать что-то вроде этого (Si.fdf - входной файл):
siesta } но этот код запускает только Сиесту без какого-либо входного файла.public static void main(String argv[]) throws IOException {
Runtime r = Runtime.getRuntime();
Process p;
BufferedReader is;
String line;
System.out.println("siesta < Si.fdf");
p = r.exec("siesta < Si.fdf");
System.out.println("In Main after exec");
is = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = is.readLine()) != null)
System.out.println(line);
System.out.println("In Main after EOF");
System.out.flush();
try {
p.waitFor();
} catch (InterruptedException e) {
System.err.println(e); //
return;
}
System.err.println("Process done, exit status was " + p.exitValue());
return;
1 ответ
Наконец-то я решил это. Я добавляю пакетный файл в терминал, чтобы программа контролировала его содержимое. Запустив этот пакетный файл, проблема решена.
public static void writeBatchFile(String batchFileName, String fileName, String inputFile) throws Exception{
FileWriter write = new FileWriter(batchFileName);
PrintWriter print_line = new PrintWriter(write);
print_line.println("#!/bin/bash");
print_line.println("siesta < "+ inputFile +".fdf"+ " > " + fileName + ".out");
print_line.close();
}