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程序。程序获取作业文件夹。然后在foreach文件夹中,它调用cl编译器并创建一个exe文件。在该程序尝试测试用例之后,却出现了问题。程序在for循环foreach中运行exe,但有些进程返回正确,但有些进程失败并返回255或-1073741819。我不明白为什么一些exes失败了相同的命令,并且不会让其他人失败。当我使用您的解决方案时,问题仍然存在 – Yunus