【问题标题】:java runtime redirect c program outputjava运行时重定向c程序输出
【发布时间】:2016-07-06 01:56:29
【问题描述】:

我在将 c 程序重定向到 java 运行时类时遇到问题。这是一个类似的问题,如

Java Runtime execute C language program get no output

但是,答案对我没有帮助,我猜是因为我在 Windows 环境中。我已经安装了 Cygwin 并将路径 C:\cygwin64\bin 添加到我的环境中以运行我的 c 程序。我的C程序如下,编译为a.exe:

#include<stdio.h>
int main() {
    printf("Hello World");
    return 0;
}

在我的 java 程序中:

Process p = Runtime.getRuntime().exec("C:\\a.exe");
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    while (in.ready()) {
        System.out.println(in.readLine());
    }

此代码不打印任何内容。但是,如果我改变了

进程 p = Runtime.getRuntime().exec("C:\\a.exe");

到其他 bash 命令,如

进程 p = Runtime.getRuntime().exec("ls -la");

有效!

我尝试使用 ProcessBuilder 重定向输出,运行“a.exe”不起作用但“ls -la”有效。这是代码:

File output = new File("C:\\outputfile.txt"); 
ProcessBuilder pb = new ProcessBuilder("C:\\a.exe").inheritIO();
pb.redirectOutput(output);
Process p = pb.start();

我的猜测与 Cgywin 相关,但我不知道如何解决这个问题。有谁知道出了什么问题?提前谢谢,

【问题讨论】:

    标签: java c bash exec io-redirection


    【解决方案1】:

    在我花了一整天的时间做这项研究之后,最后我通过重新启动计算机来解决这个问题.....一切正常......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2012-11-26
      • 2013-09-06
      • 1970-01-01
      • 2020-10-24
      • 2011-01-06
      相关资源
      最近更新 更多