Comment puis-je empêcher MATLAB de revenir jusqu'à la fin d'un script de ligne de commande ?

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

  •  08-06-2019
  •  | 
  •  

Question

Je vois dans l'aide MATLAB (matlab -h) que je peux utiliser le -r drapeau pour spécifier un m-fichier à exécuter.Je remarque que lorsque je fais cela, MATLAB semble démarrer le script, mais revient immédiatement.Le script se déroule correctement, mais l'application principale est déjà revenue.

Existe-t-il un moyen pour que MATLAB ne revienne qu'une fois la commande terminée ?Si vous l'appelez à partir d'un programme distinct, il semble qu'il soit plus facile d'attendre le processus que d'utiliser un fichier ou des sockets pour confirmer l'achèvement.

Pour illustrer, voici un exemple de fonction waitHello.m:

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

Et j'essaie de l'exécuter en utilisant :

matlab -nosplash -nodesktop -r waitHello
Était-ce utile?

La solution

Réponse rapide:

matlab -wait -nosplash -nodesktop -r waitHello

Dans Matlab 7.1 (la version que j'ai), il existe une option de ligne de commande non documentée -wait dans matlab.bat.Si cela ne fonctionne pas pour votre version, vous pouvez probablement l'ajouter.Voici ce que j'ai trouvé.La commande en bas qui lance finalement matlab est (ligne 153) :

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

La syntaxe pertinente de la commande start (voir "help start" dans cmd.exe) dans ce cas est :

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

Un peu plus haut, parmi toutes les options de ligne de commande documentées, j'ai trouvé (ligne 60) :

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

Donc spécifier -wait devrait faire ce que vous voulez, tant que vous quittez également matlab de votre script (sinon il attendra que vous le terminiez de manière interactive).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top