2017-05-19 26 views
-1

我有一個應該在C以打開不同的程序++一個程序,該程序將返回0,1,2,或3,作爲測試,我提出了一些示例代碼:如何從Java中的ProcessBuilder獲取int輸出?

public class Tester { 
    public static void main(String[] args) { 
     String[] command = {"c:\\Java Prog\\helloWorld.exe"}; 
     ProcessBuilder proc = new ProcessBuilder(command); 
     System.out.println(proc); 
    } 
} 

的C++程序簡單地說:

#include <iostream> 
using namespace std; // I know, I know, it's bad. 
int main(void) { 
    return 2; 
} 

此打印出來:

[email protected] 

我期待這一點。但是,當我試圖將輸出轉換爲int(或其他任何東西)時,編譯器(Eclipse Mars)告訴我,無法從ProcessBuilder投射到[在此處插入任何可變類型的選項]。

我在做什麼錯?我可以將輸出格式化爲int嗎?如果不是,我該怎麼辦?在此先感謝

+0

err,是ProcessBuilder曾經[開始](https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html#start())?那麼你可以掛鉤進程的[輸出流](https://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#getOutputStream()).. –

+1

我認爲[這樣的事情](https://www.google.com.au/search?q=java+processbuilder&oq=java+processbuilder&aqs=chrome..69i57j69i60l2j0l2j69i60.5232j0j7&sourceid=chrome&ie=UTF-8)將成爲您的問題的更好起點 – MadProgrammer

+1

所以你期望你得到的輸出,但你認爲你可以以某種方式將它轉換爲int?這是令人驚訝的... – shmosel

回答

0

如何從Java中的ProcessBuilder獲得int輸出?

你不知道。你從Process得到它。

在這裏沒有任何東西。你甚至沒有執行過程,更不用說做出任何有關獲得其返回值的明智之舉。

您需要:

  1. 創建並啓動Process
  2. 關閉其輸入流並消耗其輸出流。在這種特殊情況下,沒有輸入或輸出,所以沒有關係,但在一般情況下是這樣。
  3. 獲取Process.exitValue()