金慶的專欄
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)
相冊
公告照片
搜索
積分與排名
積分 - 654326
排名 - 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" 錯誤(11017)
2.?SVN中邪惡的replace(10939)
3.?VS2005編譯libevent(10405)
4.?混音算法的學習與研究(10184)
5.?C調用lua腳本的效率測試(9003)
評論排行榜
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
金慶
閱讀(2476)
評論(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 © 金慶
国产精品亚洲综合专区片高清久久久
|
思思久久99热只有频精品66
|
久久精品国产91久久麻豆自制
|
99久久精品这里只有精品
|
人妻中文久久久久
|
韩国三级大全久久网站
|
性做久久久久久久久久久
|
av无码久久久久久不卡网站
|
久久中文字幕视频、最近更新
|
国产精品无码久久综合
|
少妇熟女久久综合网色欲
|
婷婷久久综合九色综合98
|
久久99热这里只有精品国产
|
99热精品久久只有精品
|
人妻无码中文久久久久专区
|
久久久中文字幕日本
|
亚洲伊人久久大香线蕉苏妲己
|
亚洲精品无码专区久久久
|
久久久精品国产Sm最大网站
|
久久91精品久久91综合
|
97久久精品无码一区二区天美
|
久久av无码专区亚洲av桃花岛
|
国产精品青草久久久久福利99
|
国产精品久久久久久吹潮
|
一本色道久久综合亚洲精品
|
久久人人超碰精品CAOPOREN
|
成人a毛片久久免费播放
|
久久国产精品久久
|
久久99精品国产一区二区三区
|
999久久久无码国产精品
|
九九久久自然熟的香蕉图片
|
久久久久久亚洲精品成人
|
亚洲AV日韩精品久久久久久久
|
亚洲日本va中文字幕久久
|
久久精品国产99久久久古代
|
久久久久久伊人高潮影院
|
久久精品成人欧美大片
|
无码伊人66久久大杳蕉网站谷歌
|
久久精品国产亚洲αv忘忧草
|
久久亚洲日韩看片无码
|
久久久一本精品99久久精品66
|