Redirecting stdout via system(…,'-echo')
14 views (last 30 days)
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 on 16 Dec 2016
Edited: Jose Lara on 16 Dec 2016
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.