繁体   English   中英

Java Processbuilder返回255

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM