У меня есть два процесса - пользовательский процесс и LaunchDaemon корневого уровня. Я бы хотел, чтобы оба процесса имели общие настройки. Я пытался заставить это работать через базу данных sqlite, но столкнулся с проблемами повреждения. Я думал об использовании NSUserDefaults
, но NSGlobalDomain
кажется глобальным только для пользователя, и мне нужен постоянный домен для нескольких пользователей, который NSUserDefaults
, похоже, не предоставляет.
Я пробовал читать и писать файл XML напрямую, и я могу заставить его работать нормально с несколькими потоками (через простой NSLock
), но когда я пытаюсь применить O_EXLOCK
к файлу, чтобы предотвратить запись в файл одного процесса в то время как другой, похоже, не работает.
У CFPreferences
почти те же проблемы, что и у NSUserDefaults
. Существует константа kCFPreferencesAnyUser
, но в документации сказано, что я могу использовать ее, только если у меня есть права администратора (которых нет у пользовательского процесса).
Итак, мой вопрос заключается в следующем:
Как я могу эффективно реализовать общие настройки между процессами и пользователями?