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

1

Estoy portando una aplicación C ++ / Qt desde Windows. En Windows, el programa se ejecuta como un servicio. No se recomienda que los programas que se ejecutan como un servicio también interactúen con el usuario y muestren los elementos de la GUI.

Por lo tanto, mi programa tiene dos partes. La primera parte se ejecuta como un demonio de servicio y reproduce audio en segundo plano. El programa se inicia cuando se inicia la computadora. El segundo programa, que se inicia cuando cualquier usuario inicia sesión (a través del menú Inicio - > Todos los usuarios- > Inicio), se comunica a través del socket local con el demonio de servicio para mostrar una ventana emergente de la GUI cuando se reproduce el audio.

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

¿Debo combinar ambos programas en uno y ejecutarlo como root a través de launchd y tener la interfaz gráfica de usuario de un demonio, así como reproducir audio?

¿O debería preferir mantenerlo como dos programas como ahora? ¿El demonio root reproduce audio y encuentra una forma en que el segundo programa pueda ejecutarse automáticamente cuando cada usuario inicia sesión?

    
pregunta Mikey A. Leonetti 26.09.2018 - 16:38

1 respuesta

2

En macOS, debes evitar ejecutar cualquier proceso como root . Apple probablemente sugeriría mantener este tipo de aplicación en dos partes. Cada parte debe estar en un espacio aislado con los derechos adecuados.

El proceso en segundo plano de la computadora no podrá acceder a la interfaz gráfica. Deberá necesitar un segundo proceso que se ejecute dentro de la sesión del usuario para proporcionar una interfaz al usuario.

Use launchd para iniciar el proceso de su computadora a pedido; Vea los servicios de XPC a continuación. De esta manera, mientras no se reproduce nada, evita consumir recursos.

Servicios XPC

Para macOS, Apple desea que se comunique utilizando XPC services arquitectura. Este enfoque utiliza los puertos Mach en el nivel bajo, pero sus procesos no necesitan estar demasiado preocupados por ese detalle.

    
respondido por el Graham Miln 26.09.2018 - 17:12

Lea otras preguntas en las etiquetas