私は、ユーザープロセスとルートレベルのLaunchDaemonという2つのプロセスを持っています。私は両方のプロセスが設定を共有したいと思います。私はsqliteデータベースを介して動作するようにこれを取得しようとしましたが、破損の問題が発生しました。私はNSUserDefaults
を使用することを考えましたが、NSGlobalDomain
はユーザーのためだけにグローバルなようですが、私はクロスユーザー永続ドメインが必要です。NSUserDefaults
は提供していないようです。クロスユーザーとクロスプロセスの共有設定
XMLファイルを直接読み書きしようとしましたが、複数のスレッドでうまく動作するようになりました(NSLock
)。O_EXLOCK
を適用して1つのプロセスがファイルへの書き込みは、もう一方は、動作していないようです。
CFPreferences
は、ほとんど同じ問題をNSUserDefaults
としているようです。 kCFPreferencesAnyUser
定数がありますが、ドキュメントには管理者権限(ユーザープロセスにはない権限)がある場合にのみ使用できると記載されています。
だから私の質問はこれです:
どのように効果的にクロスプロセス、クロスユーザーに共有設定を実装することができますか?