2012-03-07 14 views
3

私はCygwinのgccまたはgcc-4を呼び出してJavaからCファイルをコンパイルしようとしていますが、何も動作しないようです。私がしようとしているのは次のコード行です:JavaからCygwin CコンパイラGCCを呼び出すにはどうすればよいですか?

theProcess = Runtime.getRuntime().exec("cmd /c C:/cygwin/bin/gcc-4.exe -o C:/work/source.exe C:/work/source.c"); 

しかし、何も出力しませんでした。

+1

返されるコードは何ですか?あなたは誤ったストリームとアウトストリームを読もうとしましたか? –

+0

なぜcmd?単にgcc.exeを直接実行するのはなぜですか? – bmargulies

+1

cmd.exeを呼び出す必要はありません。 CygwinプログラムはWindows互換であるため、直接呼び出すことができます。 – anakkin

答えて

1

これを完全に理解するには、この声明の後にtheProcessを使って何をしているのかをもっと見る必要があります。しかし、単に "exec"を呼び出すだけで、Std出力には何も出力されません。出力が消費されない場合、コマンドはまったく実行されないことがあります。つまり、作成されたProcessオブジェクトの出力を読み取る必要があります。

BufferedReader br = new BufferedReader (new InputStreamReader (theProcess.getInputStream()); 
String line = br.readLine(); 
while (line != null) { 
    System.out.println(line); 
    line = br.readLine(); 
} 

これにより、プロセスの標準出力からの出力がJVMの標準出力に出力されます。

関連する問題