2010-06-26 33 views
5

Estoy usando el lenguaje C y Linux como mi plataforma de programación.Comunicación entre dos aplicaciones en la misma máquina local

Estoy desarrollando una aplicación de espacio de usuario que se ejecuta en segundo plano, como un daemon. Y mi problema es que quiero que otra aplicación de espacio de usuario se comunique con este daemon.

Sé que tengo que usar el método de comunicación Interprocess, pero no sé cuál es la implementación correcta.

Pero el uso de IPC en mi implementación de comunicación es mi otra opción. En realidad, solo quiero cambiar el atributo de mi daemon usando otra aplicación. Vea a continuación un senario:

  1. Mi daemon se ejecuta en un segundo plano.
  2. Luego, algunas aplicaciones controlarán las propiedades de un daemon, como el tiempo de espera para dormir.

Mi primera opción es accediendo a un archivo con los valores de las propiedades. Entonces mi deamon sondeará esos valores. Mientras que la otra aplicación cambiará esos valores.

No estoy seguro de la eficacia de mis opciones. Por favor aconséjame.

THanks.

Respuesta

4

Actualizar el archivo de configuración y enviar una señal para causar volver a leer es una práctica estándar, barata y fácil.

3

Está buscando D-Bus. Almacene los valores iniciales en un archivo, luego escuche sobre D-Bus para las solicitudes de cambio.

+0

gconf/dconf/xfconf todos hacen EXACTAMENTE lo que quieren (y los segundos dos son basados ​​en dbus) – Spudd86

2

Los sockets de dominio Unix son un método simple de IPC.

+0

En realidad, estoy planeando crear una biblioteca compartida para que cualquier aplicación pueda utilizar estas API para comunicarse con el daemon. ¿Es posible usar sockets de dominio en este tipo de implementación? – domlao

2

Si yo fuera usted, renunciaría por completo al IPC y en su lugar tendría el monitor daemon un archivo de configuración para los cambios. El IPC solo es realmente necesario si va a enviar miles de mensajes por segundo y la sobrecarga sería intolerable.

inotify es una opción para el control de archivos.

+0

Gracias, enviaré la señal en lugar de usar inotify. – domlao

+0

Acepto usar un archivo de configuración en este caso, pero estoy totalmente en desacuerdo con que el IPC solo deba usarse para algo así como miles de mensajes por segundo. – BobbyShaftoe

1

Haría que el daemon escuche en una tubería/fifo si es tan simple que solo necesita leer un par de bytes alimentados desde otro programa. De lo contrario, un socket de dominio local es bueno para ejecutar un protocolo simple.

Cuestiones relacionadas