Qual è la migliore pratica per un'applicazione daemon in esecuzione come root che necessita dell'accesso alla GUI? [chiuso]

1

Sto eseguendo il porting su un'applicazione C ++ / Qt da Windows. Su Windows, il programma viene eseguito come un servizio. È scoraggiato dai programmi in esecuzione come servizio per interagire anche con l'utente e visualizzare gli elementi della GUI.

Pertanto, il mio programma ha due parti. La prima parte viene eseguita come un daemon di servizio e riproduce l'audio in background. Il programma si avvia all'avvio del computer. Il secondo programma, che si avvia quando un utente esegue l'accesso (tramite Menu Start - > Tutti gli utenti- > Avvio), comunica tramite il socket locale con il daemon di servizio per visualizzare un pop-up della GUI durante la riproduzione dell'audio.

Passare a MacOS, qual è la procedura migliore per utilizzare lo stesso programma?

Dovrei unire entrambi i programmi in uno solo ed eseguirlo come root tramite launchd e far visualizzare al demone un GUI e riprodurre l'audio?

O dovrei piuttosto tenerlo come due programmi come è adesso - il demone root riproduce l'audio e trova un modo in cui il secondo programma può essere eseguito automaticamente quando ogni utente esegue l'accesso?

    
posta Mikey A. Leonetti 26.09.2018 - 16:38
fonte

1 risposta

2

Su macOS, dovresti evitare di eseguire qualsiasi processo come root . Probabilmente Apple suggerirebbe di mantenere questo tipo di applicazione in due parti. Ogni parte deve essere in sandbox con diritti appropriati.

Il tuo processo di computer in background non sarà in grado di accedere all'interfaccia grafica. avrai bisogno di un secondo processo in esecuzione all'interno della sessione dell'utente per fornire un'interfaccia all'utente.

Usa launchd per avviare il tuo processo su computer su richiesta; vedere i servizi XPC di seguito. In questo modo, mentre non sta giocando nulla, eviti di consumare risorse.

Servizi XPC

Per macOS, Apple desidera che comunichi utilizzando i servizi XPC architettura. Questo approccio utilizza le porte Mach a basso livello, ma i tuoi processi non devono essere troppo preoccupati per quel dettaglio.

    
risposta data 26.09.2018 - 17:12
fonte

Leggi altre domande sui tag