Foros del Web » Programando para Internet » PHP »

Para un programa externo ejecutado con exec()

Estas en el tema de Para un programa externo ejecutado con exec() en el foro de PHP en Foros del Web. Hola amigos, Una de las virtudes de PHP es poder ejecutar programas externos, por ejemplo, con la función exec(). Normalmente puedo ejecutar comandos de consola ...
  #1 (permalink)  
Antiguo 12/06/2017, 05:48
 
Fecha de Ingreso: mayo-2006
Mensajes: 71
Antigüedad: 11 años, 2 meses
Puntos: 0
Para un programa externo ejecutado con exec()

Hola amigos,

Una de las virtudes de PHP es poder ejecutar programas externos, por ejemplo, con la función exec(). Normalmente puedo ejecutar comandos de consola desde php sin problemas pero ahora necesito terminarlos.

Por ejemplo:

Código PHP:
<?php

exec
('whoami');

// whoami comando nos devuelve el usuario donde nos encontramos

?>
Últimamente estoy ejecutando un programa que necesita ser parado con el comando 'q' pero sinceramente no se como puedo recuperar el recurso en cuestión para poder enviarle el nuevo comando de STOP y pare la ejecución.

No creo que pudiera ser con la siguiente lógica:

Código PHP:
<?php

exec
('programa argumento1 argumento2');

//Empieza la ejecución que nunca parará hasta que enviemos el comando 'q'

exec('programa q');

//el programa para la ejecución con 'q'

?>
Creo que el segundo exec() comenzara una tarea nueva y no se asociaría a la primera pero ahí es donde esta mi duda.

Tampoco se si los otros comandos de ejecución de programas de php como estos

escapeshellarg
escapeshellcmd
passthru
proc_​close
proc_​get_​status
proc_​nice
proc_​open
proc_​terminate
shell_​exec
system

podrían ser mas beneficiosos en este tema.

Saludos amigos espero que encaminen sobre este tema.
  #2 (permalink)  
Antiguo 12/06/2017, 09:38
Avatar de hhs
hhs
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.828
Antigüedad: 4 años, 1 mes
Puntos: 336
Respuesta: Para un programa externo ejecutado con exec()

Revisa el uso de proc_open http://php.net/manual/en/function.proc-open.php eso te va a proporcionar el PID del proceso que esta usando la ejecución del programa. Pero vas a necesitar eliminar el proceso posix_kill te puede ayudar en eso http://php.net/manual/es/function.posix-kill.php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.



La zona horaria es GMT -6. Ahora son las 13:33.