Un eseguibile su macOS può essere eseguito come servizio o applicazione quasi indipendentemente da come è stato creato.
La domanda da porsi è, il processo richiede l'accesso al WindowServer? Il WindowServer è necessario per fornire un'interfaccia grafica.
Interfaccia utente grafica e sessioni utente
Un processo che richiede un'interfaccia utente grafica può essere utilizzato come processo o servizio in background. A tale scopo, avvia il processo con launchd
dalla cartella /Library/LaunchAgents
.
Per presentare un'interfaccia utente grafica, il processo deve essere avviato all'interno di una sessione utente. In launchd
termini questo significa all'interno di un ambiente Aqua
.
Un esempio di questo potrebbe essere pmuser
processo. Questo processo gestisce le attività specifiche dell'utente e gestisce le attività che il computer ha esteso pmd
processo non può eseguire direttamente.
Computer Wide Processes
Un processo che non richiede un'interfaccia utente può essere lanciato come servizio in background con launchd
dalla cartella /Library/LaunchDaemons
.
Un processo non grafico può esistere al di fuori di qualsiasi sessione utente e quindi può essere eseguito anche quando nessuno ha effettuato l'accesso.
Un processo a livello di computer non può accedere a gran parte delle funzionalità uniche di macOS. Vedi TechNote 2083 di Apple e Living Dangerously sezione.