¿Es necesario que un ejecutable de OS X se construya de manera específica (por ejemplo, sin interfaz de usuario, implementando ciertas interfaces) para que pueda ser utilizado como un servicio? ¿Varía esto según su lenguaje (por ejemplo, Objective C, Java) o su implementación (compilado frente a script)?
Respuesta
¿Demasiados anuncios?Un ejecutable en MacOS puede ejecutarse como un servicio o una aplicación casi independientemente de cómo se cree.
La pregunta que hay que hacerse es, ¿el proceso requiere acceso al WindowServer? El WindowServer es necesario para proporcionar una interfaz gráfica.
Interfaz gráfica de usuario y sesiones de usuario
Un proceso que requiere una interfaz gráfica de usuario puede utilizarse como proceso o servicio de fondo. Para ello, inicie el proceso con launchd
de la /Library/LaunchAgents
carpeta.
Para presentar una interfaz gráfica de usuario, el proceso debe iniciarse dentro de una sesión de usuario. En launchd
términos, esto significa que dentro de un Aqua
ambiente.
Un ejemplo de ello sería el programa Power Manager pmuser
proceso. Este proceso gestiona las tareas específicas del usuario y se encarga de las tareas que el ordenador amplia pmd
proceso no puede realizar directamente.
Procesos informáticos amplios
Un proceso que no requiere una interfaz de usuario puede ser lanzado como un servicio de fondo con launchd
de la /Library/LaunchDaemons
carpeta.
Un proceso no gráfico puede existir fuera de cualquier sesión de usuario y, por tanto, ejecutarse incluso cuando no hay nadie conectado.
Un proceso amplio del ordenador no puede acceder a gran parte de la funcionalidad exclusiva de MacOS. Véase la nota técnica 2083 de Apple y el Vivir peligrosamente sección.