Un exécutable OS X doit-il être construit de manière spécifique (par exemple, pas d'interface utilisateur, implémentation de certaines interfaces) pour pouvoir être utilisé comme un service ? Cela varie-t-il en fonction de son langage (par exemple, Objective C, Java) ou de son implémentation (compilé versus script) ?
Réponse
Trop de publicités?Sous MacOS, un exécutable peut être lancé comme un service ou une application. presque quelle que soit la manière dont elle est créée.
La question à poser est la suivante , Le processus nécessite-t-il un accès au WindowServer ? Le WindowServer est nécessaire pour fournir une interface graphique.
Interface utilisateur graphique et sessions utilisateur
Un processus nécessitant une interface utilisateur graphique peut être utilisé comme processus ou service d'arrière-plan. Pour ce faire, lancez le processus avec launchd
de la /Library/LaunchAgents
dossier.
Pour présenter une interface utilisateur graphique, le processus doit être lancé dans une session utilisateur. Dans launchd
Cela signifie que dans une Aqua
l'environnement.
Un exemple de ceci serait la fonction de Power Manager. pmuser
processus. Ce processus gère les tâches propres à l'utilisateur et traite les tâches que l'ordinateur large pmd
ne peut pas effectuer directement le processus.
Procédés à l'échelle de l'ordinateur
Un processus qui ne nécessite pas d'interface utilisateur peut être lancé comme un service d'arrière-plan avec launchd
de la /Library/LaunchDaemons
dossier.
Un processus non graphique peut exister en dehors de toute session utilisateur et donc fonctionner même lorsque personne n'est connecté.
Un processus large d'ordinateur ne peut pas accéder à une grande partie des fonctionnalités uniques de MacOS. Voir la TechNote 2083 d'Apple et le document Vivre dangereusement section.