El día 7 de febrero de 2011 17:01, Dario Piaf <[email protected]> escribió:
> Me gustaria que este programa tenga una interfaz grafica, la cual sea WEB,
> es decir que se pueda acceder al programa corriendo en la maquina a traves
> del servidor apache que corre en la misma.
> No se si estoy pidiendo locuras o si hay chances de hacer esto. Si existe
> alguna chance, que deberia investigar? algun modulo para apache? Si escuchan
> alternativas.

Tal como ya te han dicho, tal vez la manera más práctica sea hacer
toda la parte web en PHP. El PHP es un lenguaje muy cómodo y potente
para hacer aplicaciones WEB, y sólo te falta comunicarlo con tu
programa en C.

La comunicación dependerá de cómo necesite funcionar tu programa. ¿Se
ejecuta constantemente o de vez en cuando? Si está corriendo
constantemente tal vez DBUS sea una buena alternativa. DBUS permite
que los programas se envíen mensajes entre ellos. Pero hay otras
alternativas. Una interesante por ejemplo es que tu programe escuche
por un socket de TCP/IP. El programa en php puede conectarse al socket
y enviar información. El efecto sería el mismo que con DBUS pero con
la ventaja de que no necesitan correr en la misma máquina: el servidor
web podría estar en una máquina diferente.

Si no es necesaria una comunicación constante sino que la página sólo
sería para cambiar configuraciones, se podría hacer por ejemplo que tu
programa en C lea sus configuraciones de un archivo de texto. El
programa en PHP sólo tiene que escribir ese archivo y avisar al
programa que lo lea. Ese aviso normalmente se hace enviando una señal
SIGHUP al programa, el cual deberá atraparla (mira man 2 signal y man
7 signal).

Obviamente, siempre queda la posibilidad de no hacerlo en PHP sino
directamente en C. Un programa en C puede generar páginas dinámicas
mediante cgi-bin. Cuando Apache recibe un pedido de un cgi-bin, le
pasa los datos al programa en C. Encontrarás seguramente ejemplos ya
funcionando de cgi-bin hechos en shell script. Y finalmente, incluso
tu propio programa podría escuchar en un puerto y responder con
protocolo http, pero no creo que valga la pena llegar a tanto.

Responder a