在Windows中查找进程是否存在

时间:2016-05-16 14:03:17

标签: java php windows cmd

简短版本:

  • 在带有PID的窗口中,我的程序需要查明我的进程是否还在运行。

在linux中,我只想使用“grep pid”,所有这些都可以完成,在Windows中是这样的吗?


更长版本:

我正在Windows上制作一个php(7)系统,它运行一个蓝牙Java服务器。我的系统通过命令行运行服务器并保存PID:

    $command = 'java -jar app\InterfaceBluetooth.jar /k > storage\logs\bluetoothServerToten.txt';
    $descriptorspec = array (
        0 => array("pipe", "r"),
        1 => array("pipe", "w")
    );

    if(is_resource($prog = proc_open("start /b " . $command, $descriptorspec, $pipes))){
        $ppid = proc_get_status($prog)['pid'];
    }// IF
    else{
        // error stuff
        exit();
    }// ELSE

    $output = array_filter(explode(" ", shell_exec("wmic process get parentprocessid,processid | find \"$ppid\"")));
    array_pop($output);
    $pid = end($output);

所以,此时进程已启动并运行,我有PID。

现在,用户可以确定服务器正在运行,这一点非常重要。在某种程度上,我的系统需要检查这个,这可以追溯到短版本。

无论如何,php 7功能,命令行或其他方式,只是对我的系统能够找出它是否正在运行。

2 个答案:

答案 0 :(得分:2)

如果您只需要ps aux | grep PID,请尝试tasklist /nh /fi "pid eq PID"

答案 1 :(得分:1)

只需执行以下命令并捕获输出:

TASKLIST /v /fi "PID eq your_pid"