CプログラムをJavaランタイムクラスにリダイレクトするときに問題があります。それはしかし、答えは私を助けていない、と私はWindows環境で午前ので、私は推測していJavaランタイムリダイレクトCプログラム出力
Java Runtime execute C language program get no output
のような類似した問題です。私はCygwinをインストールして、Cのプログラムを実行するためにC:\ cygwin64 \ binというパスを自分の環境に追加します。私のCプログラムでは、以下の通りであるとA.EXEとしてコンパイル:
私のJavaプログラムで#include<stdio.h>
int main() {
printf("Hello World");
return 0;
}
:
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"); 。
プロセスp = Runtime.getRuntime()のexec( "LS -la")のような他のbashコマンドに
。
私は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に関連していますが、これを修正する方法はわかりません。誰が何が間違っているのか分かりますか?事前のおかげで、