proc_open() es similar a popen() pero provee un grado de control mucho mayor sobre la ejecución del programa. cmd es el comando a ser ejecutado por el intérprete de comandos. espec_descriptor es una matriz indexada en donde la clave representa el número de descriptor y el valor representa el modo como PHP pasará ese descriptor al proceso hijo. pipes será definido como una matriz indexada de apuntadores a archivo que corresponden a los puntos de comunicación con PHP de todo pipe que sea creado. El valor de retorno es un recurso que representa el proceso; usted debe liberarlo usando proc_close() una vez haya terminado de usarlo.
<?php |
Los números de descriptor de archivo en espec_descriptor no están limitados a 0, 1 y 2 - usted puede especificar cualquier número de descriptor de archivo válido y éste será pasado al proceso hijo. Esto le permite a su script interoperar con otros scripts que corran como "co-procesos". En particular, esto es útil para pasar contraseñas a programas como PGP, GPG y openssl en un modo más seguro. También es útil para la lectura de información de status entregada por aquellos programas en descriptores de archivo auxiliares.
Nota: Compatibilidad con windows: Los descriptores más allá de 2 (stderr) son entregados al proceso hijo como gestores heredables, pero ya que la arquitectura windows no asocia números de descriptor de archivo con gestores de bajo nivel, el proceso hijo no dispone (aun) de un medio para acceder a esos gestores. Stdin, stdout y stderr funcionan como es de esperar.
Nota: Si sólo necesita un pipe de proceso uni-direccional (una-vía), use popen() en su lugar, ya que es mucho más fácil de usar.
Vea también stream_select(), exec(), system(), passthru(), popen(), escapeshellcmd(), y el operador de comilla invertida.