2010-03-05 51 views
7

在Unix/Linux中保持用戶配置數據的推薦方式是什麼? 我的編程語言是C++。配置數據將保存爲XML /文本/二進制格式,我對處理這些文件沒有任何問題。我想知道我可以在哪裏保存它們。例如,在Windows操作系統中,配置數據可以保存在註冊表(舊的方式)或用戶應用程序數據目錄中。那麼Linux呢? 我需要讀/寫訪問配置文件。Unix/Linux中的程序配置數據

回答

9

註冊表的概念是特有的Windows和微軟曾經承認它正在考慮不周(見thisthisthis,this (see #2)this)。

在Unix和Linux中,系統範圍程序的配置位於/ etc或可能是特定於應用程序的子目錄中。

每個用戶配置數據都以隱藏文件輸入文本格式或用戶主目錄中特定於應用程序的隱藏目錄保存在用戶的主目錄中。引用主目錄的正確方法是通過環境變量HOME。通過使.成爲名稱的第一個字符來創建隱藏的文件和目錄。

全系統配置示例爲/etc/wgetrc/etc/ssh/。每用戶數據的例子是$HOME/.bashrc$HOME/.mozilla/

+2

您不應該依賴環境變量HOME。因爲我們正在談論可以進行系統調用的C++,所以你應該使用'struct passwd * pw = getpwuid(getuid());'(或者getpwuid_r',如果你需要線程安全的話),然後使用'pw-> pw_dir' – 2010-03-05 07:58:50

+0

好的建議。我從來沒有使用$ HOME的問題。我注意到許多程序也必須以這種方式工作,因爲有時候我會用有用的預期結果覆蓋HOME。 – wallyk 2010-03-05 10:28:10

+0

謝謝,我想我會遵循這個。順便說一下,我可以使用「〜」作爲程序中的主目錄嗎? – 2010-03-05 14:29:16

1

這取決於你的Linux風格,但作爲一般規則,大多數程序都在/ etc目錄中的某個位置使用主目錄中的.config文件,它可以覆蓋/ etc目錄中的默認值。


大點的.config應該是。[配置文件名稱]

+2

您可能想通過「.config」來說明您實際上是指名稱以「。」開頭的文件,而不是具有「.config」擴展名的文件。 「。」前綴是默認情況下保持文件「隱藏」。有一堆配置文件的程序有時候會有一個「.config」目錄,裏面有文件。而且,old-skool Unix應用程序傾向於使用他們的配置文件/目錄的名稱「。[appname] rc」。 – 2010-03-05 06:37:23

2

點文件是經典的Unix解決方案。如果你想要自己處理讀/寫所有事情,那就去做吧。

但是,我使用的大多數現代程序都使用GConf來存儲首選項。無論是作爲開發人員還是用戶(顯然作爲管理員,但我在那裏沒有經驗),它使許多事情更容易。

+0

關於GConf的好處,謝謝。就我而言,我有用於管理XML配置文件的跨平臺代碼,這些文件已經在Windows中運行。完成這些後,我需要添加平臺特定的代碼來選擇配置文件路徑。 – 2010-03-05 14:24:00

+1

http://api.kde.org/4.0-api/kdelibs-apidocs/kdecore/html/classKConfig.html用於* other *流行桌面的配置方案。 – ephemient 2010-03-05 18:31:21

相關問題