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 44 45 46 47 48 49 50 51 52 53 54
| <?php
$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"), // stderr est un fichier
);
//Ecriture dans le fichier
$param = 'Hello root :)\n';
$process = proc_open("sudo php ecritureFichierRoot.php -p'$param'", $descriptorspec, $pipes);//Avec Paramètre
//$process = proc_open("sudo php ecritureFichierRoot.php", $descriptorspec, $pipes);//Sans Paramètre
if (is_resource($process)) {
// $pipes ressemble à :
// 0 => fichier accessible en écriture, connecté à l'entrée standard du processus fils
// 1 => fichier accessible en lecture, connecté à la sortie standard du processus fils
// Toute erreur sera ajoutée au fichier /tmp/error-output.txt
// fwrite($pipes[0], "lectureFichierRoot.php");
fclose($pipes[0]);
while(!feof($pipes[1])) {
echo fgets($pipes[1], 1024);
}
fclose($pipes[1]);
// Il est important que vous fermiez les pipes avant d'appeler
// proc_close() afin d'éviter un verrouillage.
$return_value = proc_close($process);
echo "La commande a retourné $return_value\n";
}
//Lecture dans le fichier
$process = proc_open("sudo php lectureFichierRoot.php", $descriptorspec, $pipes);
if (is_resource($process)) {
// $pipes ressemble à :
// 0 => fichier accessible en écriture, connecté à l'entrée standard du processus fils
// 1 => fichier accessible en lecture, connecté à la sortie standard du processus fils
// Toute erreur sera ajoutée au fichier /tmp/error-output.txt
// fwrite($pipes[0], "lectureFichierRoot.php");
fclose($pipes[0]);
while(!feof($pipes[1])) {
echo fgets($pipes[1], 1024);
}
fclose($pipes[1]);
// Il est important que vous fermiez les pipes avant d'appeler
// proc_close() afin d'éviter un verrouillage.
$return_value = proc_close($process);
echo "La commande a retourné $return_value\n";
}
?> |
Partager