lunes, 28 de noviembre de 2011

php,exec() y pipes

Publicado por Covent en 14:21 ,
En php, hay varias funciones que ejecutan comandos directamente en la máquina donde se aloja la página php. Entre estas funciones están exec(), shell_exec() y system(). Todas ellas funcionan, pero no esperes hacer cosas demasiado complejas, como utilizar pipes ya que no funcionará ninguna.

Tras mucho buscar en Google he visto una referencia que puede ayudarte, pero solamente si el grado de complejidad no es demasiado elevado.

El siguiente código muestra la salida del comando ls -la | grep mydir

//ls -a | grep mydir

$proc_ls = proc_open("ls -a",
  array(
    array("pipe","r"), //stdin
    array("pipe","w"), //stdout
    array("pipe","w")  //stderr
  ),
  $pipes);

$output_ls = stream_get_contents($pipes[1]);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
$return_value_ls = proc_close($proc_ls);


$proc_grep = proc_open("grep mydir",
  array(
    array("pipe","r"), //stdin
    array("pipe","w"), //stdout
    array("pipe","w")  //stderr
  ),
  $pipes);

fwrite($pipes[0], $output_ls);
fclose($pipes[0]); 
$output_grep = stream_get_contents($pipes[1]);

fclose($pipes[1]);
fclose($pipes[2]);
$return_value_grep = proc_close($proc_grep);


print $output_grep;
?>

Más información sobre proc_open()  aqui




Si esta información te ha sido de ayuda pincha en mis anuncios. Nos ayudamos mutuamente. Gracias

Back Top

0 comentarios:

Publicar un comentario