Я пишу программу для чтения команд из файла, их выполнения и печати результата каждой команды.Обработчик обработки ProcessBuilder
Это то, что у меня есть: import java.io. *;
public class StatsGenerator {
public static void main(String [] args) throws IOException {
ProcessBuilder builder = new ProcessBuilder("/bin/bash");
Process p = builder.start();
// get output from the process
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader processOutput = new BufferedReader(isr);
InputStream errorStream = p.getErrorStream();
InputStreamReader inputStreamReader = new InputStreamReader(errorStream);
BufferedReader processErrorOutput = new BufferedReader(inputStreamReader);
// get input to the process
BufferedWriter processInput = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
// get commands to execute
File f = new File("commands.txt");
FileReader fileReader = new FileReader(f);
BufferedReader commandsReader = new BufferedReader(fileReader);
String command, output;
while((command = commandsReader.readLine()) != null) {
System.out.printf("Output of running %s is:\n", command);
processInput.write(command);
processInput.newLine();
processInput.flush();
while (processErrorOutput.ready() && (output = processErrorOutput.readLine()) != null) {
System.out.println(output);
}
while ((output = processOutput.readLine()) != null) {
System.out.println(output);
}
}
// close process
processInput.write("exit");
processInput.newLine();
processInput.flush();
// close streams
commandsReader.close();
processErrorOutput.close();
processInput.close();
processOutput.close();
}
}
Commands.txt
java Solve problems/problem01.txt
java Solve problems/problem02.txt
java Solve problems/problem03.txt
Однако это работает и выводит результат первой команды, но застревает на втором ... (и я знаю, что решить можно решить вторую)
Что я делаю неправильно?
EDIT1:
Оказывается, «Исключение в потоке" основной»ошибка из картины из-за меня, нажав CMD + C. Это все еще не объясняет, почему он перестает выводить.
Почему вы используете командный интерпретатор, чтобы начать? – fge