2011-11-13 79 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中。 –