Penso che si possa fare uso di le strutture integrate Launchd e CrashReporter per soddisfare le vostre esigenze.
Launchd è il supervisore di sistema OS X progettato per l'avvio e il monitoraggio di processi in background e viene in genere utilizzato per eseguire servizi XPC. agenti launchd possono reagire a vari eventi del sistema, e può essere configurato per riavviare processi in caso di loro danneggiamento (specificate tramite la chiave KeepAlive/SuccessfulExit
nella property list)
launchd può essere impostato per rispondere ai vari eventi del sistema come evento di lancio, incluso il monitoraggio di file e directory, orari pianificati o l'ascolto di connessioni di rete.
CrashReporter è la funzione di sistema OS X che rileva e registra tutti i blocchi di processo. Registra attraverso lo AppleSystemLogger facility e si può accedere con gli strumenti syslog come documentato nella nota tecnica collegata. In Mountain Lion, i rapporti sugli arresti dei processi utente terminano con ~/Library/DiagnosticReports/
, con un crashlog e una coppia di file plist creati per evento di arresto anomalo.
Penso che potresti utilizzare queste funzionalità in un paio di modi per raggiungere i tuoi requisiti, se launchd è responsabile per l'esecuzione dei servizi xpc, può assumere la responsabilità di riavviarli in caso di crash e possono essere dissociati da qualsiasi app si blocca.
si potrebbe scrivere un agente launchd che risponde a eventi di crash dal montioring directory relazione crash (ad esempio utilizzando la proprietà QueueDirectories
) per i nuovi registri e rilancia la vostra applicaton, o presenta le notifiche.
+1 per utile riferimento ad Apple Nota tecnica! – Floris