1 votos

¿Cuál es la mejor práctica para una aplicación daemon que se ejecuta como root y necesita acceso a la GUI?

Me voy a portar más de una C++/Qt aplicación de Windows. En Windows, el programa se ejecuta como un servicio. Es desanimado de los programas que se ejecutan como un servicio para interactuar con el usuario y la visualización de los elementos de la GUI.

Por lo tanto, mi programa tiene dos partes. La primera parte se ejecuta como un servicio del demonio y reproduce audio en segundo plano. El programa se inicia cuando se inicia el equipo. El segundo programa, que se inicia cuando el usuario inicia una sesión en (a Través de Menú Inicio->Todos los Usuarios->Inicio), se comunica a través del socket local con el servicio de demonio para mostrar una interfaz gráfica de usuario pop-up cuando se reproduce el audio.

Mover sobre MacOS, ¿cuál es la mejor práctica para utilizar el mismo programa?

Debo combinación de ambos programas en uno y ejecutarlo como root a través de launchd y tiene el demonio de la pantalla de la GUI, así como jugar con el audio?

O debería más bien mantenerlo como dos programas como es ahora - de la root demonio de la reproducción de audio y encontrar una manera de que el segundo programa se puede ejecutar automáticamente cuando cada usuario se conecta?

2voto

Steve Evans Puntos 155

En macOS, se debe evitar la ejecución de cualquier proceso como root. Apple es probable que sugieren mantener este tipo de aplicación en dos partes. Cada parte debe ser de espacio aislado con adecuado de los derechos.

Fondo de equipo de ancho proceso no será capaz de acceder a la interfaz gráfica. Usted va a necesitar un segundo proceso que se ejecuta dentro de la sesión del usuario para proporcionar una interfaz para el usuario.

Uso launchd el lanzamiento de su ordenador amplia proceso en la demanda, véase el XPC servicios a continuación. De esta manera, mientras se está reproduciendo nada, evitar el consumo de recursos.

XPC Servicios

Para macOS, Apple quiere que se comunican mediante el XPC servicios de arquitectura. Este enfoque utiliza Mach puertos en el nivel más bajo, pero los procesos no necesitan preocuparse por ese detalle.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by: