金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網游開發(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)
相冊
公告照片
搜索
積分與排名
積分 - 656584
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統C++網絡庫
asio 成為C++首選網絡庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11032)
2.?SVN中邪惡的replace(10955)
3.?VS2005編譯libevent(10413)
4.?混音算法的學習與研究(10203)
5.?C調用lua腳本的效率測試(9007)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優于指針(17)
5.?ACE與ASIO之間關于Socket編程的比較(16)
濫用ini配置文件造成崩潰
自從用上CodeGuru的CIniFile類以后,ini配置文件成為我的跨平臺通用方法。
ini文件不僅用來保存程序啟動時的配置項,也用來保存程序退出時的狀態。
后來又發展到隨時讀取ini的最新配置,隨時保存程序的運行狀態。
不過一直有個問題,就是寫ini文件時斷電的后果。
前幾天終于遇上了,斷電后發現配置文件正好被清空了。
結果程序因為缺乏必要的配置,根本無法運行。
使用Windows的WritePrivateProfile函數是否也有這樣問題?很難確認。
保險的辦法是,ini文件只用作只讀的配置,信息保存另外處理。
posted on 2008-01-29 12:16
金慶
閱讀(2486)
評論(8)
編輯
收藏
引用
所屬分類:
1. C/C++
評論
#
re: 濫用ini配置文件造成崩潰
2008-01-29 12:59
eXile
我的做法是為配置設定默認值,如果讀寫失敗,就取默認值。
回復
更多評論
#
re: 濫用ini配置文件造成崩潰
2008-01-29 13:23
lunny
先寫到臨時文件,寫成功后再覆蓋拷貝,拷貝成功再刪除臨時文件
回復
更多評論
#
re: 濫用ini配置文件造成崩潰[未登錄]
2008-01-29 14:45
cppexplore
為啥就不用內存數據庫呢
回復
更多評論
#
re: 濫用ini配置文件造成崩潰[未登錄]
2008-01-29 16:29
汪江濤
給你的ini文件加上版本和有效性結束標志。
寫的時候新建一個文件,增加版本號,寫完后結尾加有效性標志,然后刪除低版本文件。如果發現有兩個ini文件,則取高版本,看結尾有無有效性標志,如果有就讀取,否則回去取低版本,并刪除高版本。
回復
更多評論
#
re: 濫用ini配置文件造成崩潰
2008-01-30 10:43
Enoch
贊同eXile的說法,一般都有默認配置。
回復
更多評論
#
re: 濫用ini配置文件造成崩潰
2008-01-30 22:17
agaric
這個是文件系統造成的, 你應用程序考慮這么多,會很累。
用默認數據之類的,就ok
回復
更多評論
#
re: 濫用ini配置文件造成崩潰
2008-01-31 10:17
金慶
@agaric
我也懷疑是文件系統有問題,不然斷電正好斷在打開文件這個點上概率幾乎為0,雖然還是有可能。搞個版本號加有效標記確實太累。默認值是有的,但實際值與默認值不同。(不然要配置干嘛?)
回復
更多評論
#
re: 濫用ini配置文件造成崩潰
2008-03-06 14:46
Huanggang
我也遇到同樣的問題,搞了n久才搞定。跟上面lunny 的方法差不多。
1.在打開配置文件寫之前,將配置文件拷貝一份為臨時文件。
在程序中可以系統調用,如:system("cp 1.ini 1.tmp");
2.打開配置文件進行寫。
如果此時剛好在這一瞬間斷電,下面第3條就不會執行,
配置文件會被清空,但還有臨時文件。
3.寫完后close文件,此時證明文件操作已成功,可以刪除臨時文件了。
如:system("rm -f 1.tmp");
4.在應用系統啟動之前判斷是否存在臨時文件。
若存在就證明上一次對配置文件操作失敗(被清空),拷貝一份臨時文件為配置文件:
如:在腳本文件中 先rm -f 1.ini 然后cp 1.tmp 1.ini 注意:1.ini雖然被清空但還存在,所有要先rm掉,否則直接cp不會成功。
若不存在就證明上一次對配置文件操作成功,不做任何處理。
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
How are dtLinks created in NavMesh
C++ parameter passing rules
Naming Conventions for Accessors
Visual Studio 2019 Compiler Hangs
Fbx File Format Identifier
查找內存錯誤
std::thread 中的異常會丟失調用棧
用賦值代替 protobuf CopyFrom()
vs2017 linux 編譯輸出改成 vs 格式
為 LiteIDE 添加選中標記
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
亚洲国产精品无码久久一线
|
国产69精品久久久久观看软件
|
亚洲午夜精品久久久久久人妖
|
久久国产香蕉一区精品
|
久久久精品国产免大香伊
|
久久96国产精品久久久
|
久久人人爽人人人人爽AV
|
日本免费久久久久久久网站
|
狠狠色综合网站久久久久久久
|
久久中文骚妇内射
|
无码专区久久综合久中文字幕
|
欧美精品丝袜久久久中文字幕
|
国内精品久久久久影院优
|
久久成人小视频
|
久久99精品久久只有精品
|
久久99久国产麻精品66
|
久久免费视频1
|
亚洲国产精品无码久久SM
|
久久99热只有频精品8
|
久久久久久亚洲Av无码精品专口
|
人妻久久久一区二区三区
|
久久国产精品成人片免费
|
99久久久国产精品免费无卡顿
|
99久久超碰中文字幕伊人
|
久久综合综合久久狠狠狠97色88
|
香港aa三级久久三级
|
日本久久久久久久久久
|
精品久久久久久国产
|
久久亚洲综合色一区二区三区
|
久久精品无码一区二区日韩AV
|
精品一二三区久久aaa片
|
久久精品国产精品国产精品污
|
久久久久国产精品三级网
|
亚洲中文字幕久久精品无码喷水
|
久久99精品久久久久久水蜜桃
|
久久亚洲春色中文字幕久久久
|
精品久久久久久无码中文字幕
|
精品无码久久久久久尤物
|
国产亚洲美女精品久久久2020
|
久久久久无码精品
|
国内精品伊人久久久久网站
|