écrire dans un terminal linux à partir d'un script [PHP] - PHP - Programmation
Marsh Posté le 28-04-2010 à 11:19:50
Oui, echo() ou print(), cela écrit dans la page HTML, cela n'écrit pas ailleurs.
Marsh Posté le 28-04-2010 à 11:45:21
est ce qu'il n'y a pas une fonction pour écire dans le terminal?
Marsh Posté le 28-04-2010 à 11:59:00
olivthill a écrit : Oui, echo() ou print(), cela écrit dans la page HTML, cela n'écrit pas ailleurs. |
Non. Ca écrit sur la sortie standard.
Marsh Posté le 28-04-2010 à 12:00:04
mike0794> Il faut que tu regardes plutôt du coté de proc_open : http://fr.php.net/manual/fr/function.proc-open.php
Marsh Posté le 28-04-2010 à 15:22:38
Oui je pense que tu as raison mais je viens de lire la fonction et je ne comprend pas comment elle marche.
Au début je défini $cmd='nom_commande", par contre pour $descriptorspec je définis:
0 => array("pipe", "r" ), //pipe ou le processus va lire
1 => array("pipe", "w" ), //pipe ou le processus va écrire
par contre pour le 2 il faut mettre un fichier mais je ne comprend pas à quoi sert ce fichier.
Marsh Posté le 28-04-2010 à 16:19:49
le "souci" dans ton raisonnement, c'est que ce qui se situe derrière le $ est la "future commande" qui sera exécutée dès que l'utilisateur appuiera sur "entrée" et ton script PHP retourne un résultat d'une commande après l'exécution de celle-ci : donc c'est normal qu'il te l'affiche "avant".
Marsh Posté le 29-04-2010 à 11:14:33
Bonjour,
j'ai trouvé un script que j'ai modifié pour utiliser la fonction proc-open(). Je l'utilise pour ouvrir un nouveau terminal et je souhaiterais écrire dans ce terminale en lisant des commandes qui sont dans un fichier texte. Je voudrais donc savoir ce qu'il faut que je change dans mon script pour que l'entrée soit sur un fichier.
Voici mon code:
<?php
$descriptorspec = array(
0 => array("file","/home/test/Bureau/autoR.r","r" ), // stdin est un fichier où le processus va lire
1 => array("pipe", "w" ), // stdout est un pipe où le processus va écrire
2 => array("pipe", "a" ) // stderr est un pipe
);
$process = proc_open('gnome-terminal', $descriptorspec, $pipes);
if (is_resource($process))
{
// $pipes ressemble à :
// 0 => fichier accessible en écriture,
// 1 => fichier accessible en lecture, connecté à la sortie standard du processus fils
fwrite($pipes[0], 'test');
fclose($pipes[0]);
echo stream_get_contents($pipes[1]);
fclose($pipes[1]);
$return_value = proc_close($process);
}
?>
Merci d'avance
Cordialement,
Mike0794
Marsh Posté le 28-04-2010 à 10:45:22
Bonjour,
J'ai fait un script qui lance le terminal de linux avec la commande exec() ensuite je souhaite écrire une commande dans le terminal donc j'ai essayé echo() et print() mais ça m'écrit la commande devant comme dans l'exemple suivant "Rtest@ubuntu:~/Bureau$".
Or je voudrais que la commande s'écrive dèrrière le $, mais je ne sais pas comment faire.
est ce que quelqu'un peut me donner une piste,
merci d'avance,
Cordialement,
mike0794.