在Windows下检测正在运行的进程(如果没有运行则启动)

时间:2017-07-10 22:04:09

标签: php

这是我用来检查进程是否在windows下运行的代码,在本例中为calc.exe

我正在尝试启动calc.exe,如果这个没有弄清楚任务列表。

如果没有启动calc.exe,则在运行php脚本时打开,但页面保持循环,直到我关闭calc.exe

我哪里错了?

非常感谢帮助。

// START SHOW TASKLIST
// Get Tasklist
exec("tasklist 2>NUL", $task_list);

//print_r($task_list);
echo '<pre>'; print_r($task_list); echo '</pre>';
// END SHOW TASKLIST


// Service running
$kill_pattern = '~(calc)\.exe~i';

// Create array
$task_list = array();

exec("tasklist 2>NUL", $task_list);

foreach ($task_list AS $task_line) {
  if (preg_match($kill_pattern, $task_line, $out)) {
    echo "=> Detected: ".$out[1]."\n   !\n";
    $is_running = '1';  
    break; 
  }
}

if ($is_running == '1') {
  echo 'Nothing to do';
  exit; 
} else {
  // open calc.exe
  exec("calc.exe");
  exit;
}

1 个答案:

答案 0 :(得分:1)

请使用此代码以避免脚本挂断

更改

exec(calc.exe);

使用

pclose(popen('start /B cmd /C "calc.exe >NUL 2>NUL"', 'r'));