我有兩個進程 - 一個用戶進程和一個根級別的LaunchDaemon。我希望這兩個進程都具有共享設置。我試過讓這個通過sqlite數據庫工作,但已遇到腐敗問題。我曾考慮過使用NSUserDefaults
,但NSGlobalDomain
似乎只對用戶是全球性的,我需要一個跨用戶持久域,NSUserDefaults
似乎沒有提供。跨用戶和跨進程共享設置
我試過直接讀取和寫入一個XML文件,並且我可以通過多線程(通過簡單的NSLock
)正常工作,但是當我嘗試將O_EXLOCK
應用於該文件以阻止一個進程寫另一個文件時,它似乎不起作用。
CFPreferences
似乎與NSUserDefaults
有大部分相同的問題。有一個kCFPreferencesAnyUser
常數,但文檔說,我只能使用,如果我有管理員權限(用戶進程沒有)。
所以我的問題是這樣的:
我怎樣纔能有效地實現跨流程,跨用戶的共享設置?