金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網(wǎng)游開發(fā)(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊
公告照片
搜索
積分與排名
積分 - 656596
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統(tǒng)C++網(wǎng)絡(luò)庫
asio 成為C++首選網(wǎng)絡(luò)庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標(biāo)題查看
--金慶
3.?re: mingw編譯OrzNet
能發(fā)送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標(biāo)題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標(biāo)題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11032)
2.?SVN中邪惡的replace(10955)
3.?VS2005編譯libevent(10413)
4.?混音算法的學(xué)習(xí)與研究(10203)
5.?C調(diào)用lua腳本的效率測試(9007)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優(yōu)于指針(17)
5.?ACE與ASIO之間關(guān)于Socket編程的比較(16)
濫用ini配置文件造成崩潰
自從用上CodeGuru的CIniFile類以后,ini配置文件成為我的跨平臺通用方法。
ini文件不僅用來保存程序啟動時的配置項,也用來保存程序退出時的狀態(tài)。
后來又發(fā)展到隨時讀取ini的最新配置,隨時保存程序的運行狀態(tài)。
不過一直有個問題,就是寫ini文件時斷電的后果。
前幾天終于遇上了,斷電后發(fā)現(xiàn)配置文件正好被清空了。
結(jié)果程序因為缺乏必要的配置,根本無法運行。
使用Windows的WritePrivateProfile函數(shù)是否也有這樣問題?很難確認。
保險的辦法是,ini文件只用作只讀的配置,信息保存另外處理。
posted on 2008-01-29 12:16
金慶
閱讀(2486)
評論(8)
編輯
收藏
引用
所屬分類:
1. C/C++
評論
#
re: 濫用ini配置文件造成崩潰
2008-01-29 12:59
eXile
我的做法是為配置設(shè)定默認值,如果讀寫失敗,就取默認值。
回復(fù)
更多評論
#
re: 濫用ini配置文件造成崩潰
2008-01-29 13:23
lunny
先寫到臨時文件,寫成功后再覆蓋拷貝,拷貝成功再刪除臨時文件
回復(fù)
更多評論
#
re: 濫用ini配置文件造成崩潰[未登錄]
2008-01-29 14:45
cppexplore
為啥就不用內(nèi)存數(shù)據(jù)庫呢
回復(fù)
更多評論
#
re: 濫用ini配置文件造成崩潰[未登錄]
2008-01-29 16:29
汪江濤
給你的ini文件加上版本和有效性結(jié)束標(biāo)志。
寫的時候新建一個文件,增加版本號,寫完后結(jié)尾加有效性標(biāo)志,然后刪除低版本文件。如果發(fā)現(xiàn)有兩個ini文件,則取高版本,看結(jié)尾有無有效性標(biāo)志,如果有就讀取,否則回去取低版本,并刪除高版本。
回復(fù)
更多評論
#
re: 濫用ini配置文件造成崩潰
2008-01-30 10:43
Enoch
贊同eXile的說法,一般都有默認配置。
回復(fù)
更多評論
#
re: 濫用ini配置文件造成崩潰
2008-01-30 22:17
agaric
這個是文件系統(tǒng)造成的, 你應(yīng)用程序考慮這么多,會很累。
用默認數(shù)據(jù)之類的,就ok
回復(fù)
更多評論
#
re: 濫用ini配置文件造成崩潰
2008-01-31 10:17
金慶
@agaric
我也懷疑是文件系統(tǒng)有問題,不然斷電正好斷在打開文件這個點上概率幾乎為0,雖然還是有可能。搞個版本號加有效標(biāo)記確實太累。默認值是有的,但實際值與默認值不同。(不然要配置干嘛?)
回復(fù)
更多評論
#
re: 濫用ini配置文件造成崩潰
2008-03-06 14:46
Huanggang
我也遇到同樣的問題,搞了n久才搞定。跟上面lunny 的方法差不多。
1.在打開配置文件寫之前,將配置文件拷貝一份為臨時文件。
在程序中可以系統(tǒng)調(diào)用,如:system("cp 1.ini 1.tmp");
2.打開配置文件進行寫。
如果此時剛好在這一瞬間斷電,下面第3條就不會執(zhí)行,
配置文件會被清空,但還有臨時文件。
3.寫完后close文件,此時證明文件操作已成功,可以刪除臨時文件了。
如:system("rm -f 1.tmp");
4.在應(yīng)用系統(tǒng)啟動之前判斷是否存在臨時文件。
若存在就證明上一次對配置文件操作失敗(被清空),拷貝一份臨時文件為配置文件:
如:在腳本文件中 先rm -f 1.ini 然后cp 1.tmp 1.ini 注意:1.ini雖然被清空但還存在,所有要先rm掉,否則直接cp不會成功。
若不存在就證明上一次對配置文件操作成功,不做任何處理。
回復(fù)
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
How are dtLinks created in NavMesh
C++ parameter passing rules
Naming Conventions for Accessors
Visual Studio 2019 Compiler Hangs
Fbx File Format Identifier
查找內(nèi)存錯誤
std::thread 中的異常會丟失調(diào)用棧
用賦值代替 protobuf CopyFrom()
vs2017 linux 編譯輸出改成 vs 格式
為 LiteIDE 添加選中標(biāo)記
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
精品国际久久久久999波多野
|
精品国产VA久久久久久久冰
|
久久青草国产精品一区
|
狠狠综合久久综合88亚洲
|
亚洲欧洲精品成人久久奇米网
|
欧美国产成人久久精品
|
亚洲日本久久久午夜精品
|
久久丫忘忧草产品
|
伊人丁香狠狠色综合久久
|
久久人人爽人爽人人爽av
|
亚洲精品无码久久久久sm
|
国产亚洲婷婷香蕉久久精品
|
精品久久久久久无码中文野结衣
|
欧美午夜A∨大片久久
|
欧美精品久久久久久久自慰
|
99久久国产免费福利
|
国产色综合久久无码有码
|
国产精品成人久久久久三级午夜电影
|
久久亚洲国产精品123区
|
国产麻豆精品久久一二三
|
午夜精品久久久内射近拍高清
|
久久精品无码专区免费东京热
|
欧美亚洲日本久久精品
|
91精品国产91久久久久久蜜臀
|
7国产欧美日韩综合天堂中文久久久久
|
久久久久成人精品无码
|
国产婷婷成人久久Av免费高清
|
色悠久久久久久久综合网
|
99久久精品久久久久久清纯
|
久久久免费精品re6
|
久久综合九色综合网站
|
青青热久久国产久精品
|
久久国产成人午夜AV影院
|
久久99国产精品尤物
|
欧美丰满熟妇BBB久久久
|
国产成人久久精品一区二区三区
|
久久久久久久久久久免费精品
|
国产ww久久久久久久久久
|
97久久精品人人澡人人爽
|
久久综合久久性久99毛片
|
99久久精品久久久久久清纯
|