0

我想从 java 运行 c++ .exe 文件,也想打印 .exe 文件的输出。我尝试并成功从 java 运行 c++ .exe 文件,但我不知道如何打印输出(在 java 输出中使用java的c ++ .exe文件的字段),我尝试使用processExitValue和waitfor方法但没有得到所需的输出。java代码在这里

int processExitVal = 0;
         try {
        Process p = Runtime.getRuntime().exec("cmd /c  start rs.exe");
        processExitVal = p.waitFor();
       // p.getOutputStream();
        //InputStreamReader ir=new InputStreamReader(p.getInputStream());
       //BufferedReader t = new BufferedReader((new InputStreamReader(p.getInputStream())));
       // int y=Integer.parseInt(t.readLine());
        InputStream in=p.getInputStream();
        System.out.println(in.read());
        //System.out.println("output"+Process.getOutputStream());
        } catch (IOException e) {
        System.out.println("IOException");
        e.printStackTrace();
        } catch (InterruptedException e) {
        System.out.println("InterruptedException");
        e.printStackTrace();
       }
       System.out.println(processExitVal);
       System.out.println("Execution complete");
}

如果你能帮我解决这个问题,我将不胜感激。提前致谢

4

2 回答 2

0

使用“rs.exe”而不是“cmd /c start rs.exe”

例如:

Process process = Runtime.getRuntime().exec("rs.exe");
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while((line = in.readLine()) != null) {
  System.out.println(line);
}
于 2013-05-27T13:42:56.937 回答
0

您可以使用 aScanner然后从中读取行。你确定你的进程正在标准输出上写一些东西吗?

编辑:

read():从输入流中读取下一个字节的数据。

您必须使用扫描仪:

Scanner scan = new Scanner(p.getInputStream());
String line = scan.getNextLine();

关于 Deestan 的回答:getInputStream()这里是正确的方法,我们想要过程的输出,这是应用程序的输入。

于 2013-05-27T13:28:28.723 回答