¿Cómo puedo evitar que MATLAB regrese hasta que se complete un script de línea de comandos?
-
08-06-2019 - |
Pregunta
Veo en la ayuda de MATLAB (matlab -h
) que puedo usar el -r
bandera para especificar un m
-archivo para ejecutar.Noto que cuando hago esto, MATLAB parece iniciar el script, pero regresa inmediatamente.El script se procesa bien, pero la aplicación principal ya regresó.
¿Hay alguna forma de hacer que MATLAB regrese solo una vez finalizado el comando?Si lo llama desde un programa separado, parece que es más fácil esperar el proceso que usar un archivo o sockets para confirmar la finalización.
Para ilustrar, aquí hay una función de muestra. waitHello.m
:
function waitHello
disp('Waiting...');
pause(3); %pauses 3 seconds
disp('Hello World');
quit;
Y trato de ejecutar esto usando:
matlab -nosplash -nodesktop -r waitHello
Solución
Respuesta rápida:
matlab -wait -nosplash -nodesktop -r waitHello
En Matlab 7.1 (la versión que tengo) hay una opción de línea de comando no documentada: esperar en matlab.bat.Si no funciona para tu versión, probablemente puedas agregarlo.Esto es lo que encontré.El comando en la parte inferior que finalmente inicia matlab es (línea 153):
start "MATLAB" %START_WAIT% "%MATLAB_BIN_DIR%\%MATLAB_ARCH%\matlab" %MATLAB_ARGS%
La sintaxis relevante del comando de inicio (consulte "ayuda de inicio" en cmd.exe) en este caso es:
start ["window title"] [/wait] myprogram.exe args ...
Un poco más arriba, entre todas las opciones de línea de comando documentadas, encontré (línea 60):
) else if (%opt%) == (-wait) (
set START_WAIT=/wait
) else (
Por lo tanto, especificar -wait debería hacer lo que desea, siempre y cuando también salga de matlab de su secuencia de comandos (de lo contrario, esperará a que lo finalice de forma interactiva).