我正在开发一个基于 Web 的应用程序,我需要运行一个 Matlab 脚本来处理一些信息。
问题是我对同时运行的 Matlab 进程的最大数量有限制,因此,我必须获取每个进程的 PID 才能知道它们中是否有任何一个已经崩溃以及它是哪一个。
我使用了一些方法来获取它的 PID,但由于某种原因,运行像“notepad.exe”这样的简单命令可以正常工作并获得正确的 PID,但是当我运行我的脚本时,它会得到错误的 PID。
我尝试过的方法之一是这个:
$process = "matlab";
$command = "-sd ".$softExecPath." -r \"analyse('".$videoDataPath."', '".$id_video_data."') \" ";
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->exec($process." ".$command);
$pid = intval($oExec->ProcessID);
另一个是:
$process = "matlab";
$command = "-sd ".$softExecPath." -r \"analyse('".$videoDataPath."', '".$id_video_data."') \" ";
$command = $process." ".$command;
// use psexec to start in background, pipe stderr to stdout to capture pid
exec("C:/AppServ/www/PsTools/psexec.exe -d -accepteula $command 2>&1", $output);
// capture pid on the 6th line
preg_match('/ID (\d+)/', $output[5], $matches);
$pid = $matches[1];
他们俩都得到了PID,但都不是真正的PID。