• <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

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            配置文件的安全性,請注意他們的討論

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

            ini文件不僅用來保存程序啟動時的配置項,也用來保存程序退出時的狀態。
            后來又發展到隨時讀取ini的最新配置,隨時保存程序的運行狀態。

            不過一直有個問題,就是寫ini文件時斷電的后果。
            前幾天終于遇上了,斷電后發現配置文件正好被清空了。
            結果程序因為缺乏必要的配置,根本無法運行。

            使用Windows的WritePrivateProfile函數是否也有這樣問題?很難確認。

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

            posted on 2008-01-29 12:16 金慶 閱讀(1112) 評論(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不會成功。

            若不存在就證明上一次對配置文件操作成功,不做任何處理。  回復  更多評論

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

            国产精品久久久久无码av| 欧美精品国产综合久久| 国产精品久久久福利| 伊人色综合久久天天| 欧美粉嫩小泬久久久久久久| 久久久无码精品亚洲日韩软件| 欧美亚洲国产精品久久| 久久99国内精品自在现线| 一级做a爱片久久毛片| 99精品久久精品一区二区| 久久久久久久99精品免费观看| 人妻无码精品久久亚瑟影视| 久久精品中文騷妇女内射| 精品免费久久久久国产一区| 亚洲精品第一综合99久久| 日本精品久久久中文字幕| 亚洲精品无码久久久影院相关影片 | 久久综合给合久久国产免费| 国产99久久久国产精免费| 新狼窝色AV性久久久久久| 一本久久a久久精品综合香蕉 | 狠狠色丁香婷婷久久综合五月| 久久久久亚洲AV无码网站| 国内精品伊人久久久影院| 久久精品国产精品亚洲人人| 99精品国产在热久久| 久久久久亚洲av无码专区喷水| 精品久久久久久无码不卡| 婷婷久久综合九色综合绿巨人| 国产成人综合久久精品尤物| 俺来也俺去啦久久综合网| 久久精品国产精品亚洲毛片| 亚洲精品美女久久久久99| 伊人久久大香线蕉av一区| 国产精品久久婷婷六月丁香| 亚洲精品99久久久久中文字幕| 久久精品中文字幕第23页| 久久嫩草影院免费看夜色| 欧美性大战久久久久久| 亚洲v国产v天堂a无码久久| 国产精品久久久久蜜芽|