How can I stop MATLAB from returning until after a command-line script completes?
Asked Answered
S

1

23

I see in the MATLAB help (matlab -h) that I can use the -r flag to specify an m-file to run. I notice when I do this, MATLAB seems to start the script, but immediately return. The script processes fine, but the main app has already returned.

Is there any way to get MATLAB to only return once the command is finished? If you're calling it from a separate program it seems like it's easier to wait on the process than to use a file or sockets to confirm completion.

To illustrate, here's a sample function waitHello.m:

function waitHello
    disp('Waiting...');
    pause(3); %pauses 3 seconds
    disp('Hello World');
    quit;

And I try to run this using:

matlab -nosplash -nodesktop -r waitHello
Scow answered 18/8, 2008 at 12:10 Comment(0)
C
25

Quick answer:

matlab -wait -nosplash -nodesktop -r waitHello

In Matlab 7.1 (the version I have) there is an undocumented command line option -wait in matlab.bat. If it doesn't work for your version, you could probably add it in. Here's what I found. The command at the bottom that finally launches matlab is (line 153):

start "MATLAB" %START_WAIT% "%MATLAB_BIN_DIR%\%MATLAB_ARCH%\matlab" %MATLAB_ARGS%

The relevant syntax of the start command (see "help start" in cmd.exe) in this case is:

start ["window title"] [/wait] myprogram.exe args ...

A bit higher, among all of the documented command line options, I found (line 60):

) else if (%opt%) == (-wait) (
  set START_WAIT=/wait
) else (

So specifying -wait should do what you want, as long as you're also exiting matlab from your script (otherwise it will wait for you to terminate it interactively).

Caucasia answered 18/8, 2008 at 15:10 Comment(2)
This option is not there on linux, do you know how I could achieve the same?Lingua
@Snickers3192 see my answer here for a Unix equivalent of -wait flag (using the wait shell command)Vincenzovincible

© 2022 - 2024 — McMap. All rights reserved.