3 votes

Déterminer si un processus est actif dans Windows

Version courte :

  • Dans Windows, avec le PID, mon programme doit déterminer si mon processus est toujours en cours d'exécution/en vie.

Sous Linux, j'utiliserais simplement "grep pid" et tout serait fait, y a-t-il quelque chose de semblable sous Windows ?

Version longue :

Je réalise un système php(7) sur Windows, qui fait tourner un serveur Java bluetooth. Mon système fait tourner le serveur en ligne de commande et enregistre le 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);

À ce stade, le processus est opérationnel et j'ai le PID.

Maintenant, il est important que l'utilisateur puisse savoir avec certitude que le serveur fonctionne. D'une manière ou d'une autre, mon système doit vérifier cela, ce qui nous ramène à la version courte.

Peu importe comment, fonction php 7, ligne de commande ou autre, il suffit que mon système puisse savoir s'il est en cours d'exécution.

2voto

tair Points 1443

Si tout ce dont vous avez besoin est l'équivalent de ps aux | grep PID , essayez tasklist /nh /fi "pid eq PID" .

1voto

mike Points 580

Il suffit d'exécuter la commande ci-dessous et d'observer le résultat :

TASKLIST /v /fi "PID eq your_pid"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X