金慶的專欄
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)
相冊
公告照片
搜索
積分與排名
積分 - 659031
排名 - 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" 錯誤(11054)
2.?SVN中邪惡的replace(10972)
3.?VS2005編譯libevent(10429)
4.?混音算法的學習與研究(10230)
5.?C調用lua腳本的效率測試(9019)
評論排行榜
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
金慶
閱讀(2502)
評論(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 © 金慶
97久久精品人人做人人爽
|
97久久精品人妻人人搡人人玩
|
一级做a爰片久久毛片16
|
久久精品亚洲精品国产欧美
|
无码任你躁久久久久久
|
久久婷婷国产综合精品
|
久久久99精品成人片中文字幕
|
久久天天婷婷五月俺也去
|
国产成人精品免费久久久久
|
久久久久99精品成人片牛牛影视
|
久久人人爽人人爽人人片av麻烦
|
久久精品国产亚洲AV高清热
|
国产精品成人精品久久久
|
囯产精品久久久久久久久蜜桃
|
久久国产亚洲精品麻豆
|
久久亚洲日韩精品一区二区三区
|
久久精品国产亚洲5555
|
亚洲狠狠综合久久
|
久久精品亚洲日本波多野结衣
|
青青草国产97免久久费观看
|
久久综合九色综合精品
|
久久国产乱子伦免费精品
|
狠狠色噜噜色狠狠狠综合久久
|
久久久久久亚洲精品不卡
|
久久精品国产亚洲麻豆
|
欧洲成人午夜精品无码区久久
|
麻豆久久
|
亚洲国产成人精品久久久国产成人一区二区三区综
|
国产精品久久久久久影院
|
久久婷婷国产剧情内射白浆
|
国产成人久久精品麻豆一区
|
国产精品一久久香蕉国产线看
|
久久人人爽人人爽人人片AV不
|
亚洲国产精品无码久久
|
欧美va久久久噜噜噜久久
|
看久久久久久a级毛片
|
国产精品久久久久AV福利动漫
|
久久亚洲美女精品国产精品
|
久久精品午夜一区二区福利
|
久久久久久久亚洲Av无码
|
久久久亚洲欧洲日产国码aⅴ
|