Java Processbuilder 返回 255

标签 java c++ command-line

我想运行带有文本输入和输出的 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%

关于Java Processbuilder 返回 255,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33238093/

相关文章:

java - 优化 CSV 处理脚本 - Python、Perl 和 Java

Java 编码器 "input encoding"

java - 如何在 Eclipse 中构建 Maven pom?

c++ - 如何在 C(++) 中定义自定义错误代码

java - 在 Java 中,是否存在用于对非均匀分布的时间序列数据进行插值的实现?

C++ : The second time calling a function, 但仍然影响我以前的指针

windows - 从两组文本文件中提取唯一的行

命令行中的 Java keylistener

command-line - MinGW make 命令的奇怪问题(使用 muParser)?

c++ - 字符串复制函数产生 `pointer being freed was not allocated`