通过MATLAB中的Java ProcessBuilder将命令发送到后台可执行文件

时间:2015-11-25 12:39:26

标签: java matlab processbuilder

我在MATLAB中使用Java ProcessBuilder在后台打开可执行文件。此可执行文件执行一些自动化任务,然后暂停,等待用户键入一些文本并按Enter键。

我可以通过ProcessBuilder向可执行文件发送“enter key”命令,但是我无法发送文本字符串。有人可以帮助我吗?到目前为止,我的代码是在后台启动可执行文件:

% specify the executable to run
 run_exe_file = {'my_executable_program.exe'};
   % initialize the java ProcessBuilder, run the executable
   processBuilder = java.lang.ProcessBuilder(run_exe_file);
   myProcess = processBuilder.start();
% initialize the reader. notice the myProcess in myProcess.getInputStream
reader = ...
    java.io.BufferedReader(...
        java.io.InputStreamReader(...
             myProcess.getInputStream() ...
        ) ...
    );
% initialize the writer. notice the myProcess in myProcess.getOutputStream
writer = ...
    java.io.BufferedWriter(...
        java.io.OutputStreamWriter(...
             myProcess.getOutputStream() ...
        ) ...
    );

运行上面的代码后,'my_executable_program.exe'开始在后台成功运行。后台程序运行一些任务后,等待用户输入。例如,如果我想发送一个“输入键”按下程序,我在MATLAB中键入以下内容:

writer.newLine; writer.flush; reader.readLine; 

成功发送enter键命令。但是,如果我想向程序发送一些文本,根据我的理解,我应该使用以下代码:

writer.write("Here is some text I'm sending to the program"); writer.flush; reader.readLine;

但是,运行上面的代码不会在我的测试中将文本字符串发送到程序。有人可以帮助我发送文本的正确语法吗?

谢谢

0 个答案:

没有答案