我有一个问题将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有关,但我不知道如何解决这个问题。有谁知道什么是错的?提前谢谢,
答案 0 :(得分:1)
在我花了一整天做这项研究之后,最后我通过重新启动计算机解决了这个问题......一切正常......