MATLAB Answers

Redirecting stdout via system(…,'-echo')

조회 수: 36(최근 30일)
Darren Engwirda
Darren Engwirda 2016년 12월 14일
댓글: David Wyatt 2018년 9월 25일
I often call computationally intensive command-line programs from within MATLAB using the system command:
[status, result] = system(cmd_line_for_my_low_level_exe, '-echo');
where the -echo option (supposedly) echoes console output (stdout) generated by low_level_exe in the MATLAB command window.
On Linux machines this works great, with MATLAB echoing the console output in (seemingly) real-time. Users get a nice continuous update on low_level_exe's progress.
On Windows machines this is not the case. It can often be many minutes in-between echoes, and users sometimes get impatient and assume the code has crashed...
Is there a way to increase/control the frequency of MATLAB's -echo, or possibly another, better alternative entirely? (I'd prefer to stay away from mex files to maintain compatibility with Octave).
Is this actually a MATLAB issue, or just a Linux/Windows incompatibility?


Jose Lara
Jose Lara 2016년 12월 16일
편집: Jose Lara 2016년 12월 16일
Darren, One thing to try to not use the second output argument, but write the output of the operating system command to a file. For example,
>> s = system(['echo ' cmd_line_for_my_low_level_exe ' >> out.txt']);
And read the file back into MATLAB:
>> r = textscan('out.txt');
It does add an extra line to your script but will be computed faster.
  댓글 수: 1
David Wyatt
David Wyatt 2018년 9월 25일
I have the same problem as the OP.
However, I'm not clear on how to use textscan to show the output from the operating system command in "real time", since it is not (as far as I am aware) possible to easily loop while the system command is running, or to detect when the command has finished in another thread.
Please could you elaborate?
Many thanks in advance.

댓글을 달려면 로그인하십시오.



Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by