在Windows XP中,是否有可能获得由exec()启动的进程的PID?

我正在使用exec()函数来执行相同的外部程序,我想在某些情况下停止其中一个。 但是下面的命令:

 taskkill /IM program.exe 

将得到所有的program.exe杀害。 所以我认为最好的方式是通过PID来杀死程序进程。

所以,我认为每次程序执行时都要获得PID,然后杀掉它。

我在Windows XP上使用PHP 5.3。

Solutions Collecting From Web of "在Windows XP中,是否有可能获得由exec()启动的进程的PID?"

Windows上的exec挂起,直到子进程结束。 你需要一个孩子的PID,所以我想你想要一个孩子。

试试这个代码,它为我工作。 它不会破解notepad.exe并显示其PID

  $command = 'notepad.exe'; $WshShell = new COM("WScript.Shell"); $oExec = $WshShell->exec("notepad.exe"); print_r ( $oExec->ProcessID ) 

注意$ WshShell-> exec而不是$ WshShell->像一些Google搜索引擎声明一样运行。

愿它帮助别人

PID应作为$output数组的第一个元素返回。

 exec($command, $output); $pid = (int)$output[0];