2008-08-18 13 views
20

Widzę w pomocy MATLAB (matlab -h), że mogę użyć flagi -r do określenia pliku-m do uruchomienia. Zauważam, że kiedy to robię, wydaje mi się, że MATLAB uruchamia skrypt, ale natychmiast wraca. Skrypt działa dobrze, ale główna aplikacja już powróciła.Jak zatrzymać odtwarzanie programu MATLAB, dopóki nie zostanie ukończony skrypt wiersza polecenia?

Czy istnieje sposób, aby MATLAB powrócił tylko po zakończeniu polecenia? Jeśli wywołujesz go z oddzielnego programu, wydaje się, że łatwiej jest poczekać na proces niż użyć pliku lub gniazd, aby potwierdzić zakończenie.

Aby zilustrować, oto funkcja próbka waitHello.m:

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

I próbuję uruchomić to przy użyciu:

matlab -nosplash -nodesktop -r waitHello 

Odpowiedz

24

Szybka odpowiedź:

matlab -wait -nosplash -nodesktop -r waitHello 

W Matlab 7.1 (the wersja, którą mam) istnieje nieudokumentowana opcja wiersza poleceń -wait in matlab.bat. Jeśli nie działa w Twojej wersji, prawdopodobnie możesz go dodać. Oto co znalazłem. Komenda na dole, które ostatecznie uruchamia matlab jest (linia 153): w tym przypadku

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

Odpowiednie składni polecenia startu (patrz „Pomoc start” w cmd.exe) jest:

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

nieco wyższe, wśród wszystkich udokumentowanych opcji wiersza poleceń, znalazłem (linia 60):

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

Więc określającą -wait powinien robić to, co chcesz, tak długo, jak jesteś również wychodzenia ze swojego MATLAB skrypt (w przeciwnym razie będzie wa abyś mógł zakończyć to interaktywnie).

+2

Ta opcja nie jest dostępna na Linuksie, czy wiesz, w jaki sposób mogę osiągnąć to samo? – Snickers3192

+0

@ Snickers3192 [zobacz moją odpowiedź tutaj] (https://stackoverflow.com/a/4621554/97160) dla ekwiwalentu Unixa flagi '-wait' (używając [' wait'] (https: //en.wikipedia .org/wiki/Wait_ (command)) polecenie powłoki) – Amro

Powiązane problemy