讀寫檔案與程序退出或者掉電問題

2021-06-09 04:47:06 字數 491 閱讀 2423

其實cfile封裝的是api,readfile和writefile 

呼叫這兩個api時是不會立即進行磁碟操作的,除非你在createfile時使用了file_flag_no_buffering。 

一般情況下,writefile會先把資料寫到記憶體的緩衝中,然後定時定量,按需寫入硬碟。由於硬碟的設計原理,一次性寫入硬碟的位元組數必須等於乙個磁軌在乙個扇區內的容量大小(也就是windows所說的簇)的整數倍。cfile的flush操作封裝的是flushfilebuffers,它會強制將記憶體中緩衝的資料寫入硬碟,其實在closehandle的時候系統會做同樣的動作。 

如果在flush之後掉電,系統可以保證所有需要寫入的資料已經遞交到硬碟,但是硬碟確不能保證。因為硬碟為了提高效率也設有快取,現在主流硬碟的緩衝是2m。如果你在大量寫入資料之後,快取就會堆積一定量準備寫入硬碟的資料,但這是非常快的,因為從硬般快取到磁碟是硬碟的內部傳輸,一般2m的資料不會超過0.5秒。所以,在flush操作後再等待1秒中後斷電因該是安全的。

程序等待與退出

程序等待就是等待子程序的狀態改變,獲取子程序的退出狀態碼,允許系統釋放子程序的所有資源,這時候子程序在所有資源才會被釋放掉。程序等待是避免產生殭屍程序的主要方式 程序等待的方式 1.pid t wait int status status 用於獲取子程序 退出狀態碼 返回值是返回退出的子程序pid ...

建立程序,檔案讀寫

在windows環境下,利用高階語言程式設計環境 限定為vs環境或vc環境 呼叫相關的系統呼叫 createproccess,即系統api 實現乙個包括 程序建立,檔案讀寫 功能的應用程式。有乙個文字檔案commandlist.txt,第一行是說明性文字 本檔案最後一次開啟和執行日期是2020022...

程序篇 exit 與 exit 退出程序

exit exit include void exit int status 參 數status,程式退出的返回值 include void exit int status exit 與 exit 區別 exit 則在這些基礎上作了一些包裝,在執行退出之前加了若干道工序。exit 屬於標準庫函式 e...