Normalmente un pacchetto di applicazioni su OS X può essere avviato solo una volta, tuttavia, semplicemente copiando il pacchetto, la stessa applicazione può essere avviata due volte. Qual è la migliore strategia per rilevare e fermare questa possibilità?Come rilevare se un'applicazione OS X è già stata avviata
Su Windows questo effetto può essere semplicemente ottenuto dall'applicazione che crea una risorsa denominata all'avvio e quindi esce se non è possibile creare la risorsa denominata, indicando che è in esecuzione un altro processo che ha già creato la stessa risorsa. Queste risorse vengono rilasciate in modo affidabile su Windows quando si chiude l'applicazione.
Il problema che ho visto quando la ricerca di questo è che le API su OS X mantenere lo stato nel file system e quindi rende la strategia utilizzata sulle finestre inaffidabili, cioè persistente file dopo un'uscita impropria può erroneamente indicare che l'applicazione è già in esecuzione.
Le API che posso utilizzare per ottenere lo stesso effetto su OS X sono: posix, carbon e boost.
Idee?
Perché vuoi farlo anche tu? A differenza di Windows, il sistema operativo si occupa di impedire l'esecuzione di più istanze di un'applicazione nel caso comune. Nel caso raro, perché impedirlo? –
L'applicazione in questione è un gioco. Eseguendo più copie del gioco su una singola macchina, un giocatore avrebbe un vantaggio ingiusto sugli altri giocatori in alcune situazioni. –