1
我試圖使用使用MATLAB:用Java命令Matlab的
創建一個新的Java進程產卵Matlab的的第二個實例,然後
寫命令到第二來自Matlab的第一個實例的Matlab實例。
該代碼似乎運行良好,但我沒有看到任何出現在第二個Matlab實例的命令窗口中。我究竟做錯了什麼?
我試過的代碼是:
% Start a 2nd instance of Matlab
MatlabProcess = java.lang.Runtime.getRuntime().exec('matlab -nosplash');
pause(20); % I don't know if this pause is really needed.
% Set up a buffered Java stream writer to write to the new Matlab Process
OutputStream = MatlabProcess.getOutputStream();
OutputStreamWriter = java.io.OutputStreamWriter(OutputStream);
OutputBufferedWriter = java.io.BufferedWriter(OutputStreamWriter);
% Write some text to the 2nd Matlab Instance
OutputBufferedWriter.write('pi\n');
OutputBufferedWriter.flush();
當我啓動秒的Matlab實例: MatlabProcess = java.lang.Runtime.getRuntime()。exec('matlab -nosplash -nodesktop'); 然後命令窗口不會啓動,我可以通過getInputStream()從Matlab的衍生實例讀取輸出。 雖然我仍然不能用上面的代碼寫入輸出流。代碼似乎執行正常,但似乎沒有寫入Matlab的第二個實例。 – Greg 2012-01-16 07:03:28
@Greg:你不寫入輸出流,你寫入輸入流(這意味着子進程的標準輸入)。等等,不,Java文檔全部搞砸了。 – 2012-01-16 07:10:24
感謝您的回覆。我對Java相當陌生,並且對寫入InputStream的想法感到困惑。 據我所知,Java InputStreams沒有write()方法。然而,Java OutputStreams可以: http://docs.oracle.com/javase/1.4.2/docs/api/java/io/OutputStream.html 我一定錯過了一些東西,但我很難理解它是什麼。 – Greg 2012-01-16 07:28:49