2013-05-15 87 views
2

如何使用Java輸入用戶輸入運行c執行文件Runtime().exec()。如果沒有我的C程序執行文件中的用戶 輸入運行在Runtime().exec()在Runtime.exec()中運行執行文件並獲取用戶輸入

例如:下面的C程序如果n是預定義的,它的執行文件中 Java運行時()運行...如果n是用戶輸入如何運行執行文件?

#include <stdio.h> 
#include <time.h>  
#include <unistd.h> 
int main() 
{ 
    setbuf(stdout, NULL); //set buffer null 
    int i,n; 
    scanf("%d",&n); 
     for(i=0;i<=n;i++) 
    { 
    printf("%d\n",i); 
    sleep(1); //delay 
    } 
} //main 

Java代碼....

import java.io.*; 
import java.lang.Runtime; 
import java.lang.*; 
import java.io.File; 
import java.util.Timer; 
import java.util.TimerTask; 

public class run3 
{ 
public static void main(String[] args) 
{ 
try 
{ 
String[] cmd = {"file path"}; 
Process p = java.lang.Runtime.getRuntime().exec(cmd); 
String s; 
BufferedReader stdInput = new BufferedReader(new 
              InputStreamReader(p.getInputStream())); 
BufferedReader stdError = new BufferedReader(new 
              InputStreamReader(p.getErrorStream())); 

    while ((s = stdInput.readLine()) != null) 
    { System.out.println(s); } 

      System.out.println("Done."); 
    }//try 
    catch (IOException ex) 
    { ex.printStackTrace(); } 
} //void 
} //main  
+2

爲了上帝的緣故,使用'ProcessBuilder'! –

+0

Java Native Interface ??? http://techforum4u.com/content.php/390-Steps-to-Call-a-C-Program-from-Java – SenthilPrabhu

+0

@Senthil Prabhu。沒有JNI –

回答

1

有多種方法可以做到這一點,這依賴於你所要實現的目標:

  • 做最簡單的方法這將通過n作爲命令行參數。

  • 你可以讓C程序從標準輸入讀取n ...並使用Process對象的getOutputStream方法從Java端寫入。你可以打開「/ dev/console」或「/ dev/tty」並從那裏讀取n。在Windows上,我相信你可以用其他方式做到這一點。


確定。鑑於此,您只需調用p.getInputStream(),將輸入寫入該流,然後關閉它... ,然後嘗試讀取該命令的輸出。

+0

@ Stephen..I有c執行文件只有它從用戶獲得輸入值並打印結果。只是我試圖通過java.util執行該文件。你可以告訴一點點。謝謝 –

相關問題