java运行时重定向c程序输出
java runtime redirect c program output
我将 c 程序重定向到 java 运行time class 时遇到问题。这是一个类似的问题
但是,答案对我没有帮助,我猜测是因为我处于 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 重定向输出,运行ning "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 有关的东西,但我不知道如何解决这个问题。有谁知道怎么了?提前致谢,
我花了一整天的时间进行这项研究,最后我通过重新启动计算机解决了这个问题......一切正常....
我将 c 程序重定向到 java 运行time class 时遇到问题。这是一个类似的问题
但是,答案对我没有帮助,我猜测是因为我处于 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 重定向输出,运行ning "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 有关的东西,但我不知道如何解决这个问题。有谁知道怎么了?提前致谢,
我花了一整天的时间进行这项研究,最后我通过重新启动计算机解决了这个问题......一切正常....