|
(PHP 4 >= 4.3.0, PHP 5)
proc_open -- Ejecutar un comando y abrir apuntadores de archivo para entrada/salidaproc_open() es similar a popen() pero provee un grado de control mucho mayor sobre la ejecución del programa.
PHP 5 introduce soporte pty para sistemas con ptys Unix98. Esto le permite a su script interactuar con aplicaciones que esperan hablar con una terminal. Un pty trabaja como un pipe, pero es bi-direccional, así que no hay necesidad de especificar un modo de lectura/escritura. El ejemplo presentado más adelante muestra cómo usar un pty, note que no tiene que tener todos los descriptores hablando con un pty. También note que solo un pty es creado, aun cuando se especifica pty 3 veces. En una futura versión de PHP, puede que sea posible hacer más que solo leer y escribir en el pty.
El comando a ejecutar
Una matriz indexada en donde las llaves representan el número del descriptor y el valor representa el modo en que PHP pasará el descriptor al proceso hijo. 0 es stdin, 1 es stdout, y 2 es stderr.
Los únicos tipos de pipe soportados son file, pipe y pty.
Los números de descriptor de archivo no se limitan a 0, 1 y 2 - es posible que especifique 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 corren como "co-procesos". En particular, esto es útil para pasar frases secretas a programas como PGP, GPG y openssl de una forma más segura. También es útil para leer información de status ofrecida por esos programas en descriptores de archivo auxiliares.
Recibirá como valor una matriz indexada de apuntadores de archivo que corresponden a los valores en PHP de los pipes creados.
El directorio de trabajo inicial para el comando. Este debe ser una ruta de directorio absoluta, o NULL si desea usar el valor predeterminado (el directorio de trabajo del proceso PHP actual)
Una matriz con las variables de entorno para el comando que será ejecutado, o NULL para usar el mismo entorno que el proceso PHP actual
Le permite especificar opciones adicionales. En la actualidad solo se reconoce suppress_errors, opción que elimina los errores generados por esta función cuando su valor es TRUE
Devuelve un recurso que representa el proceso, el cual debe ser liberado usando proc_close() cuando haya terminado de usarlo. En caso de error, devuelve FALSE.
Ejemplo 2. Uso de ptys
|
Nota: Compatibilidad con Windows: Los descriptores más allá de 2 (stderr) se ponen a disposición del proceso hijo como gestores heredables, pero ya que la arquitectura de Windows no asocia números de descriptores de archivo con gestores de bajo nivel, el proceso hijo no tiene (aun) una forma de acceder a esos gestores. Stdin, stdout y stderr funcionan como es de esperarse.
Nota: Si solo necesita un pipe de proceso uni-direccional (de una vía), use popen() en su lugar, ya que es mucho más fácil de usar.
Hosting by: hurra.com
Generated: 2007-01-26 18:00:49