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.