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

时间:2012-08-04 09:43:06

标签: php windows exec

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

taskkill /IM program.exe

将导致所有program.exe被杀。所以我认为最好的方法是通过PID来杀死程序进程。

所以,我认为每次执行程序时都会获取PID,然后将其删除。

我在Windows XP上使用PHP 5.3。

2 个答案:

答案 0 :(得分:1)

Windows上的

exec挂起,直到子进程结束。你需要孩子的PID,所以我想你想要没有孩子。

试试这段代码,它对我有用。它nohups notepad.exe并显示其PID

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

注意$ WshShell-> exec而不是$ WshShell->运行一些googled ressources声明。

可以帮助其他人

答案 1 :(得分:0)

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

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