![](/img/trans.png)
[英]How to pass a string value of length greater than 255 to a processbuilder in java
[英]Java Processbuilder returns 255
我想用文本输入和输出运行C ++程序exe,但不知何故,processbuilder返回255并且不打印结果输出txt。
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);
}
尝试将子进程的所有输出重定向到主进程。 我相信你会看到错误的原因。
ProcessBuilder compileProcessBuilder = new ProcessBuilder(cmds);
// redirect all IO separately
compileProcessBuilder.redirectInput(ProcessBuilder.Redirect.INHERIT);
compileProcessBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
compileProcessBuilder.redirectError(ProcessBuilder.Redirect.INHERIT);
// or use a convenient call for all at once (thanks VGR to mention it)
compileProcessBuilder.inheritIO();
Process compileProcess = compileProcessBuilder.start();
更新
如果手动启动它,该过程会返回什么? 也许他们真的会退回那些退出代码。
run.cmd
select.exe <C:\input.txt >C:\output.txt
echo %ERRORLEVEL%
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.