2015-05-29 77 views
0

我有一種情況,我正在尋找我的Java程序作爲BASH腳本運行,輪到它將運行C++程序。以C++程序輸出爲Java輸入

我期待將C++程序(純文本字符串打印到終端)的輸出作爲Java程序的輸入。

我第一次嘗試使用下面的代碼從終端讀入輸入,但我不確定如何將它從用戶輸入轉換爲自動接受C++輸入。

Java代碼::

Console c; 
c = System.console(); 
if (c == null) { 
    System.out.println("No console."); 
    System.exit(1); 
} 
String data = c.readLine(); 

我然後使用InputStreamReader與重定向C的輸出++程序一起試圖

BufferedReader input = null; 
try { 
    input = new BufferedReader(new InputStreamReader(System.in)); 
    String htmlLine = null; 
    while ((htmlLine = input.readLine()) != null) { 
    System.out.println(htmlLine); 
    } 
} 

命令重定向輸出:

java -jar program.jar arg1 arg2 arg3 < ./runActivities.sh 

然而結果就是它只是打印的內容到終端。

回答

4

看起來您已經擁有所有的Java和C++代碼。缺少的難題似乎是外殼重定向。你應該查閱你正在使用的shell的手冊並尋找重定向。如果你正在使用bash shell的重定向應該是這樣的:

$ ./runActivities.sh | java -jar program.jar arg1 arg2 arg3 
+0

工作感謝!沒想到會是這麼簡單。 – Colin747

+0

是的,但你不能從需求java運行它 –

+0

我只需要它在初始啓動時運行。 – Colin747

1

你可以使用調用Runtime.getRuntime()EXEC(「yourCommand」)從Java功能, 它將返回它具有一個Process對象輸入,輸出和err流,您可以使用這些流發送和接收來自您的Porcess的數據。

Process p = Runtime.getRuntime().exec("yourCommand"); 
    InputStream is = p.getInputStream(); 
    // you con now read from inputStream, it is the output of your programm in C++ 
+1

由於要執行的命令是一個shell腳本,這個stackoverflow也可能有幫助:http://stackoverflow.com/questions/17142573/java-runtime-exec-to-run-shell-script-cannot-open-file – Matthias