PDA

Ver la versión completa : [Ayuda] Alguien que me eche un cable con PHP y procesos en LINUX: enviar SIGINT



3L_S4N70
06/05/2010, 19:42
Hola chicos:

A ver quién me puede echar un cable con lo siguiente. Veréis, los que habéis seguido otros posts míos, sabréis que ando enfrascado en algo que empezó quedándome enorme, pero que poco a poco voy controlando. Mis últimos devaneos anduvieron por el tema de lanzar procesos en consola desde CGI, y después desde PHP, pero he descubierto que PHP es la releche, así que estoy intentando prescindir lo máximo que puedo de C.

Ya no puedo prescindir más, las librerías que necesito sólo están en C, así que ahora me encuentro ante el problema:

Quiero enviar una señal SIGINT a un proceso programado en C, que yo mismo he lanzado desde un script PHP, para poder matarlo. Lo intento con proc_open que me abre también unas tuberías (o ficheros, lo que yo le diga) como entradas-salidas estándar, de tal manera, que puedo enviarle cosillas por ahí. El caso es que no sé cómo enviarle el Ctrl+C, lo intento con:


fwrite($pipes[0], '^C');

pero me da la sensación de que no debe ser así, porque pasa de mi...

Mil gracias de antemano.

eguren
06/05/2010, 21:17
si abres el fichero devolverá un valor, creo que si se ejecuta dará otro valor haz un bucle para que se cierre, aunque no he entendido muy bien lo que pides.

PharaOnyx
06/05/2010, 21:25
Si tienes el PID del proceso puedes usar la función posix_kill. En contra de lo que sugiere su nombre, sirve para enviar todo tipo de señales a procesos

Saludos, Alex

juanvvc
06/05/2010, 21:28
Si tienes el PID del proceso, no tienes más que hacer `kill -2 PID`(las comillas invertidas ejecutan un comando de consola desde PHP)

3L_S4N70
07/05/2010, 13:52
Bien, gracias chicos, le echo una prueba y os comento.


< - >
Bueno, ando con otro problemilla previo a probar lo que me habéis comentado: mirad, quiero cargar un script php que a su vez me ponga algún botoncito en una web y tal, y que sea el que me lance un proceso. El tema está en que con proc_open se queda esperando a que este proceso termine (o no, vaya, a que le pase proc_close, que no para el proceso, pero sí hace que el php se desentienda, cosa que tampoco me mola mucho, pero bueno). El caso es que proc_open abre unas tuberías como ya he comentado, y me gustaría poder tener unos botoncitos que a su vez manden comandos por la entrada estándar (que en este caso, es una tubería que existe mientras no le plante un proc_close). Osea, quisiera saber si es posible que el php no se quede esperando a que termine el proceso y además poder enviarle comandos por la tubería que hace las veces de entrada estándar del proceso lanzado.

Un saludo