• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見(jiàn)諒!~
            隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            配置文件的安全性,請(qǐng)注意他們的討論

            自從用上CodeGuru的CIniFile類以后,ini配置文件成為我的跨平臺(tái)通用方法。

            ini文件不僅用來(lái)保存程序啟動(dòng)時(shí)的配置項(xiàng),也用來(lái)保存程序退出時(shí)的狀態(tài)。
            后來(lái)又發(fā)展到隨時(shí)讀取ini的最新配置,隨時(shí)保存程序的運(yùn)行狀態(tài)。

            不過(guò)一直有個(gè)問(wèn)題,就是寫ini文件時(shí)斷電的后果。
            前幾天終于遇上了,斷電后發(fā)現(xiàn)配置文件正好被清空了。
            結(jié)果程序因?yàn)槿狈Ρ匾呐渲茫緹o(wú)法運(yùn)行。

            使用Windows的WritePrivateProfile函數(shù)是否也有這樣問(wèn)題?很難確認(rèn)。

            保險(xiǎn)的辦法是,ini文件只用作只讀的配置,信息保存另外處理。

            posted on 2008-01-29 12:16 金慶 閱讀(1112) 評(píng)論(8)  編輯 收藏 引用 所屬分類: 1. C/C++

            評(píng)論

            # re: 濫用ini配置文件造成崩潰 2008-01-29 12:59 eXile
            我的做法是為配置設(shè)定默認(rèn)值,如果讀寫失敗,就取默認(rèn)值。  回復(fù)  更多評(píng)論
             

            # re: 濫用ini配置文件造成崩潰 2008-01-29 13:23 lunny
            先寫到臨時(shí)文件,寫成功后再覆蓋拷貝,拷貝成功再刪除臨時(shí)文件  回復(fù)  更多評(píng)論
             

            # re: 濫用ini配置文件造成崩潰[未登錄](méi) 2008-01-29 14:45 cppexplore
            為啥就不用內(nèi)存數(shù)據(jù)庫(kù)呢  回復(fù)  更多評(píng)論
             

            # re: 濫用ini配置文件造成崩潰[未登錄](méi) 2008-01-29 16:29 汪江濤
            給你的ini文件加上版本和有效性結(jié)束標(biāo)志。
            寫的時(shí)候新建一個(gè)文件,增加版本號(hào),寫完后結(jié)尾加有效性標(biāo)志,然后刪除低版本文件。如果發(fā)現(xiàn)有兩個(gè)ini文件,則取高版本,看結(jié)尾有無(wú)有效性標(biāo)志,如果有就讀取,否則回去取低版本,并刪除高版本。  回復(fù)  更多評(píng)論
             

            # re: 濫用ini配置文件造成崩潰 2008-01-30 10:43 Enoch
            贊同eXile的說(shuō)法,一般都有默認(rèn)配置。  回復(fù)  更多評(píng)論
             

            # re: 濫用ini配置文件造成崩潰 2008-01-30 22:17 agaric
            這個(gè)是文件系統(tǒng)造成的, 你應(yīng)用程序考慮這么多,會(huì)很累。
            用默認(rèn)數(shù)據(jù)之類的,就ok  回復(fù)  更多評(píng)論
             

            # re: 濫用ini配置文件造成崩潰 2008-01-31 10:17 金慶
            @agaric
            我也懷疑是文件系統(tǒng)有問(wèn)題,不然斷電正好斷在打開(kāi)文件這個(gè)點(diǎn)上概率幾乎為0,雖然還是有可能。搞個(gè)版本號(hào)加有效標(biāo)記確實(shí)太累。默認(rèn)值是有的,但實(shí)際值與默認(rèn)值不同。(不然要配置干嘛?)  回復(fù)  更多評(píng)論
             

            # re: 濫用ini配置文件造成崩潰 2008-03-06 14:46 Huanggang
            我也遇到同樣的問(wèn)題,搞了n久才搞定。跟上面lunny 的方法差不多。

            1.在打開(kāi)配置文件寫之前,將配置文件拷貝一份為臨時(shí)文件。
            在程序中可以系統(tǒng)調(diào)用,如:system("cp 1.ini 1.tmp");

            2.打開(kāi)配置文件進(jìn)行寫。
            如果此時(shí)剛好在這一瞬間斷電,下面第3條就不會(huì)執(zhí)行,
            配置文件會(huì)被清空,但還有臨時(shí)文件。

            3.寫完后close文件,此時(shí)證明文件操作已成功,可以刪除臨時(shí)文件了。
            如:system("rm -f 1.tmp");

            4.在應(yīng)用系統(tǒng)啟動(dòng)之前判斷是否存在臨時(shí)文件。
            若存在就證明上一次對(duì)配置文件操作失敗(被清空),拷貝一份臨時(shí)文件為配置文件:
            如:在腳本文件中 先rm -f 1.ini 然后cp 1.tmp 1.ini 注意:1.ini雖然被清空但還存在,所有要先rm掉,否則直接cp不會(huì)成功。

            若不存在就證明上一次對(duì)配置文件操作成功,不做任何處理。  回復(fù)  更多評(píng)論

            posted on 2008-05-22 22:57 肥仔 閱讀(452) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++ 基礎(chǔ)

            久久久精品久久久久特色影视| 理论片午午伦夜理片久久| 午夜精品久久影院蜜桃| 国产精品久久久久久久人人看| 一本大道久久香蕉成人网| 久久亚洲精品中文字幕| 久久久中文字幕| 一级女性全黄久久生活片免费 | 亚洲国产成人精品女人久久久 | 久久精品人人做人人爽电影| 日本强好片久久久久久AAA| 亚洲国产精品久久久久网站| 欧美粉嫩小泬久久久久久久| 日韩精品无码久久久久久| 狠狠精品干练久久久无码中文字幕| 久久人人爽人人爽人人片AV不 | 精品午夜久久福利大片| 国产综合精品久久亚洲| 久久综合给久久狠狠97色| 久久精品国产第一区二区| 久久99精品久久久久久hb无码| 亚洲欧洲精品成人久久曰影片| 国产成人久久精品一区二区三区| 午夜肉伦伦影院久久精品免费看国产一区二区三区| 亚洲日韩欧美一区久久久久我| 国产成人久久777777| 国产精品久久久久久久久鸭| 伊人久久无码中文字幕| 久久中文字幕无码专区| 99久久国产免费福利| 99久久99久久精品免费看蜜桃 | 无遮挡粉嫩小泬久久久久久久| 久久久久久A亚洲欧洲AV冫| 91精品国产色综久久| 国产精品久久久久久久久免费| 人妻无码αv中文字幕久久| 精产国品久久一二三产区区别 | 亚洲精品综合久久| 午夜精品久久久久9999高清| 亚洲精品综合久久| 综合网日日天干夜夜久久|