2011-11-13 125 views
0
#include <iostream> 
#include <string> 
using namespace std; 

int main() { 
     freopen("input.txt", "r", stdin);  
     freopen("output.txt", "w", stdout); 
     string s; 
     cin >> s; 
     cout << s; 
     return 0; 
} 

如何使用java程序執行上述C++程序的a.exe文件? 我嘗試使用以下但output.txt文件沒有被生成。從java程序啓動C++程序

Runtime rt = Runtime.getRuntime(); 
Process p = rt.exec(..filepath..) 
+0

請發表你可能會得到任何錯誤信息。如果你沒有得到任何,檢查'output.txt'寫入文件到不同的目錄比你預期的一個。 – nfechner

+0

參考@ nfechner的評論,我認爲文件正在創建到運行該進程的java程序的當前工作目錄中,而不是在exe文件所在的目錄中(除非它們碰巧是相同的)。 – esaj

+0

@nfechner,我沒有收到任何錯誤消息。我使用netbeans和'input.txt,main.java和上面的C++程序的exe文件在同一個目錄中。所以output.txt應該只在該目錄下生成。 –

回答

0
import java.io.*; 

    public class Test { 
     public static void main(String[] args) { 
      Runtime run = Runtime.getRuntime(); 
      try { 

       Process pp=run.exec("c:\\a"); 
       BufferedReader in =new BufferedReader(new InputStreamReader(pp.getErrorStream())); 

       // Do your Stuff 

       int exitVal = pp.waitFor(); 
       System.out.println("Process exitValue: " + exitVal); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       System.out.println(e.getMessage()); 
      } 
     } 
} 
+0

它在cmd中工作,但不在netbeans中。 –