¿Cómo puedo evitar que MATLAB regrese hasta que se complete un script de línea de comandos?

StackOverflow https://stackoverflow.com/questions/14495

  •  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
¿Fue útil?

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).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top