Share via


認可到磁碟常數

Microsoft 特定的

語法

#include <stdio.h>

備註

這些 Microsoft 特定的常數,會指定是否要將與開啟檔案相關聯的緩衝區排清至作業系統緩衝區或磁碟。 該模式會包含在指定讀取/寫入存取類型的字串中 ("r""w""a""r+""w+""a+")。

認可到磁碟模式如下所列:

  • c

    將指定緩衝區的未撰寫內容寫入磁碟。 此認可到磁片功能只會在 對 或 函式的 _flushall 明確呼叫 fflush 時發生。 此模式在處理敏感性資料時非常有用。 例如,如果程式在呼叫 fflush_flushall 之後終止,則可以確定您的資料已抵達作業系統的緩衝區。 不過,在作業系統也終止的情況下,除非檔案是以 c 選項開啟,否則該資料可能永遠都不會抵達磁碟。

  • n

    將指定緩衝區的未撰寫內容寫入作業系統的緩衝區。 作業系統可以快取資料,然後判斷寫入磁碟的最佳時間。 在許多情況下,此行為將會是很有效率的程式行為。 不過,如果資料的保留非常重要 (例如銀行交易或機票資訊),請考慮使用 c 選項。 預設是 n 模式。

注意

cn 選項並非 fopen 的 ANSI 標準之一部分,而是 Microsoft 延伸模組,但在需要 ANSI 可攜性時不應使用。

搭配現有程式碼使用認可到磁片功能

根據預設, fflush 呼叫 或 _flushall 程式庫函式會將資料寫入作業系統所維護的緩衝區。 作業系統會判斷實際將資料寫入磁碟的最佳時間。 執行階段程式庫的認可到磁碟功能可讓您確保重要資料會直接寫入至磁碟,而不是寫入作業系統的緩衝區。 您可以透過將現有程式的物件檔案與 COMMODE.OBJ 連結,在不用重新撰寫該程式的情況下將此功能提供給它。

在產生的可執行檔中,對 fflush 的呼叫會將緩衝區的內容直接寫入磁碟,而對 _flushall 的呼叫則會將所有緩衝區的內容寫入磁碟。 這兩個函式是唯一會受到 COMMODE.OBJ 影響的函式。

END Microsoft 特定的

另請參閱

資料流 I/O
_fdopen, _wfdopen
fopen, _wfopen
全域常數