1
Я хочу запустить C++-программу exe с текстовым вводом и выводом, но как-то processbuilder возвращает 255 и не выводит результаты на вывод txt.Java Processbuilder возвращает 255
public static void runCommandPrompt(String[] cmds) {
ProcessBuilder compileProcessBuilder = new ProcessBuilder(cmds);
Process compileProcess = null;
try {
compileProcess = compileProcessBuilder.start();
int exitValue = compileProcess.waitFor();
System.out.println(exitValue);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
String[] evaluateCommands = { "cmd",
"/c",
"cd C:\\TestPath & select.exe <C:\\input.txt >C:\\output.txt" };
runCommandPrompt(evaluateCommands);
}
Вы также можете сделать это с помощью одного вызова метода:. CompileProcessBuilder [inheritIO()] (http://docs.oracle.com/javase/8/docs/api /java/lang/ProcessBuilder.html#inheritIO--) – VGR
@VGR Вы правы. Я только хотел показать вербальную версию. Я вложил ваш комментарий в ответ. Это хорошее дополнение. – SubOptimal
Спасибо, что помогли. Но у меня другая проблема. Я ТА Лекция C++. Поэтому старайтесь автоматически компилировать и тестировать результаты. Поэтому я решил написать программу на Java. Программа получает домашнюю папку. Затем зайдите в папку студента, он вызывает cl-компилятор и создает exe. После того, как программа пробует тест, но есть проблема. Программа запускает exe in for loop foreach, но некоторые процессы возвращаются правильно, но некоторые процессы терпят неудачу и возвращают 255 или -1073741819. Я не понимаю, почему не удается выполнить одни и те же команды для некоторых exes и не подводит других. Когда я использовал ваше решение, проблема все еще существует – Yunus