2016-07-06 78 views
1

我有一個問題,將一個c程序重定向到java運行時類。這就像java運行時重定向c程序輸出

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有關的東西,但我不知道如何解決這個問題。有誰知道什麼是錯的?在此先感謝,

回答

1

我花了整天做這個研究後,最後我通過重新啓動我的電腦修復此問題.....並且一切正常......