金慶的專欄
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)
相冊
公告照片
搜索
積分與排名
積分 - 654091
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統(tǒng)C++網(wǎng)絡(luò)庫
asio 成為C++首選網(wǎng)絡(luò)庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發(fā)送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11017)
2.?SVN中邪惡的replace(10939)
3.?VS2005編譯libevent(10404)
4.?混音算法的學(xué)習(xí)與研究(10184)
5.?C調(diào)用lua腳本的效率測試(9003)
評論排行榜
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
金慶
閱讀(2476)
評論(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é)束標志。
寫的時候新建一個文件,增加版本號,寫完后結(jié)尾加有效性標志,然后刪除低版本文件。如果發(fā)現(xiàn)有兩個ini文件,則取高版本,看結(jié)尾有無有效性標志,如果有就讀取,否則回去取低版本,并刪除高版本。
回復(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,雖然還是有可能。搞個版本號加有效標記確實太累。默認值是有的,但實際值與默認值不同。(不然要配置干嘛?)
回復(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 添加選中標記
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
久久久久99精品成人片三人毛片
|
精品国产乱码久久久久久1区2区
|
91精品国产色综久久
|
无码8090精品久久一区
|
国产精品美女久久久久网
|
武侠古典久久婷婷狼人伊人
|
精品国产日韩久久亚洲
|
久久男人中文字幕资源站
|
精品久久人人爽天天玩人人妻
|
欧美午夜A∨大片久久
|
婷婷久久久亚洲欧洲日产国码AV
|
久久久久亚洲精品中文字幕
|
久久精品国产亚洲AV蜜臀色欲
|
一本色道久久88综合日韩精品
|
久久久久97国产精华液好用吗
|
久久天天躁狠狠躁夜夜躁2014
|
国产一区二区精品久久
|
青青草原综合久久
|
999久久久免费国产精品播放
|
思思久久精品在热线热
|
久久久久久亚洲精品无码
|
AAA级久久久精品无码片
|
欧美亚洲色综久久精品国产
|
精品永久久福利一区二区
|
一本久久精品一区二区
|
久久这里只有精品视频99
|
一级做a爰片久久毛片16
|
国产精品久久波多野结衣
|
亚洲AV日韩精品久久久久久久
|
久久国内免费视频
|
精品国际久久久久999波多野
|
久久久久亚洲AV无码观看
|
伊人久久综在合线亚洲2019
|
亚洲AV乱码久久精品蜜桃
|
伊人久久大香线蕉亚洲五月天
|
久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口
|
伊人久久精品无码av一区
|
久久午夜无码鲁丝片秋霞
|
久久综合视频网
|
日产精品99久久久久久
|
精品久久无码中文字幕
|