J'ai deux processus - un processus utilisateur et un LaunchDaemon niveau racine. Je voudrais les deux processus d'avoir les paramètres partagés. J'ai essayé d' obtenir cela fonctionne via une base de données SQLite, mais se sont heurtées à des problèmes de corruption. J'ai pensé à utiliser NSUserDefaults
, mais NSGlobalDomain
semble être que globale pour l'utilisateur, et je besoin d' un domaine persistant inter-utilisateur, ce qui NSUserDefaults
ne semble pas fournir.
J'ai essayé de lire et d' écrire un fichier XML directement, et je peux obtenir que cela fonctionne très bien avec plusieurs threads (via un simple NSLock
), mais lorsque je tente d'appliquer un O_EXLOCK
au fichier pour empêcher un processus d'écriture dans le fichier alors que le autre, il ne semble pas fonctionner.
CFPreferences
semble avoir la plupart des mêmes problèmes que NSUserDefaults
. Il y a une kCFPreferencesAnyUser
constante, mais la documentation dit que je ne peux utiliser que si j'ai des privilèges d' administrateur (que le processus utilisateur ne dispose pas).
Voici donc ma question:
Comment puis-je mettre en œuvre efficacement inter-processus et paramètres partagés inter-utilisateur?