Avatar billede harlikoen Nybegynder
08. april 2005 - 01:59 Der er 1 løsning

proc_open og pipes

Hey folk!  :D

Jeg sysler lige pt med at få mine scripts til at eksekvere programmer i en shell på en UNIX box, som man skal kunne stikke commands hen af vejen....  Til det formål har jeg rodet lidt med proc_open. Jeg tager udgangspunkt i koden direkte fra php.net documentation, for den ligner min til en forveksling:


<?php
$descriptorspec = array(
  0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
  1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
  2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
);

$cwd = '/tmp';
$env = array('some_option' => 'aeiou');

$process = proc_open('php', $descriptorspec, $pipes, $cwd, $env);

if (is_resource($process)) {
  // $pipes now looks like this:
  // 0 => writeable handle connected to child stdin
  // 1 => readable handle connected to child stdout
  // Any error output will be appended to /tmp/error-output.txt

  fwrite($pipes[0], '<?php print_r($_ENV); ?>');
  fclose($pipes[0]);

  echo stream_get_contents($pipes[1]);
  fclose($pipes[1]);

  // It is important that you close any pipes before calling
  // proc_close in order to avoid a deadlock
  $return_value = proc_close($process);

  echo "command returned $return_value\n";
}
?>

...jeg har samme pipe description osv... Mit meget simple spørgsmål er så:

Er det på nogen måde muligt at sende en command via fwrite(pipes[0], blah);
og så læse output stream, og så siden foretage samme procedure igen?  Hvis ja hvordan skal den så kringles?  Som det ser ud nu kan jeg kun få output efter at pipes[0] er blevet closed... Og så har jeg ikke mulighed for at sende flere commands... Men er der mulighed for at åbne denne igen måske?

Håber I kan hjælpe mig! :D

Hilsen Harlikoen
Avatar billede harlikoen Nybegynder
29. juni 2007 - 18:52 #1
....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester