You didn't tell us which platform you're on (Windows? Unix?). What does the system call return?
Some Ideas (since you cannot post code, we can try to guess your approach / chose a number next time ;-):
- system("....matlab someargs &"); --- get rid of the &
- system("nohup ....matlab someargs &"); --- get rid of nohup and &
- system("....matlab someargs"); --- check if matlab is a script that in turn starts a background process
- system("....matlab someargs"); --- something special about someargs?
- ...
Your Perl program could identify the MATLAB PID and wait (checking for the PID's existence periodically)
until the process terminates before starting the next script.
- Update:
- Nothing to be sorry for. I'am not familiar enough with Windows and Matlab to
give you any further suggestions... ok, maybe yet another:
I found a tutorial that looks quite good. There, the batch mode
is described (see section: Getting Started).
There, the exit command is suggested to terminate batch-runs. So I assume, the batch mode has to be terminated explicitly. Maybe check your *.m files for any
occurrences of exit that might terminate the script execution early and modify your command to
matlab -sd Directory -r File1;File2;exit ... maybe that helps? You can even call Perl
programs from Matlab (see here
; shell scripts also). So another workaround might be the creation of File3.m that just contains a
perl() or system() call to start your 3rd script? Well, at least the true Matlab hackers
have something to grin ;-)