1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| $descriptorspec = array(
0 => array("pipe", "r"), // // stdin est un pipe où le processus va lire
1 => array("pipe", "w"), // stdout est un pipe où le processus va écrire
2 => array("pipe", "w")
);
$cwd = '/tmp';
echo "\non lance commande : $cmd \n";
$process1 = proc_open($cmd.' &', $descriptorspec, $pipes);
if (is_resource($process1)) {
$stdin = $pipes[0];
$stdout = $pipes[1];
$stderr = $pipes[2];
$outw=false;
while (! feof($stderr) || ! feof($stdout))
{
if(! feof($stderr)){
echo "Erreur :".fgets($stderr);
echo "\n";
echo "On sort\n";
$outw=true;
}
if(! feof($stdout)){
/*echo "sortie :".fgets($stdout);
echo "\n";*/
;
}
if($outw)
break;
}/**/
echo "Fermeture de stdin...";
fclose($pipes[0]);
echo "OK\nFermeture de stdout...";
fclose($pipes[1]);
echo "OK\nFermeture de stderr...";
fclose($pipes[2]);
echo "OK\n";
echo "Fermeture du processus $status...";
$exit_code = proc_close($process1);
echo "OK\ncode de sortie : ".$exit_code."\n"; |
Partager