Costanti di commit su disco

Sezione specifica Microsoft

Sintassi

#include <stdio.h>

Osservazioni:

Queste costanti specifiche di Microsoft indicano se il buffer associato al file aperto viene scaricato nei buffer del sistema operativo o sul disco. La modalità è inclusa nella stringa che specifica il tipo di accesso di lettura/scrittura ("r", "w", "a", "r+", "w+", "a+").

Le modalità di commit su disco sono le seguenti:

  • c

    Scrive su disco il contenuto non scritto del buffer specificato. Questa funzionalità da commit a disco si verifica solo in chiamate esplicite a fflush o alla _flushall funzione . Questa modalità è utile quando si lavora con dati sensibili. Se ad esempio il programma termina dopo una chiamata a fflush o _flushall è possibile essere certi che i dati abbiano raggiunto i buffer del sistema operativo. Tuttavia, a meno che un file non venga aperto con l'opzione c, i dati potrebbero non raggiungere mai il disco se anche l'esecuzione del sistema operativo viene terminata.

  • n

    Scrive il contenuto non scritto del buffer specificato nei buffer del sistema operativo. Il sistema operativo può memorizzare i dati nella cache e quindi determinare il momento ottimale per la scrittura su disco. In molti casi questo comportamento determina un funzionamento efficiente dei programmi. Se tuttavia la conservazione dei dati (quali transazioni bancarie o dati di biglietti aerei) è della massima importanza, considerare l'uso dell'opzione c. La modalità n è quella predefinita.

Nota

Le opzionic e nnon fanno parte dello standard ANSI per fopen ma sono estensioni Microsoft e non devono essere usate quando è richiesta la portabilità ANSI.

Uso della funzionalità commit-to-disk con il codice esistente

Per impostazione predefinita, le chiamate alle funzioni di fflush libreria o _flushall scrivono i dati nei buffer gestiti dal sistema operativo. Il sistema operativo determina il momento ottimale per la scrittura dei dati su disco. La funzionalità di commit su disco della libreria di runtime consente di garantire che i dati critici siano scritti direttamente su disco anziché nei buffer del sistema operativo. È possibile assegnare questa funzionalità a un programma esistente senza riscriverlo, collegando i file oggetto del programma a COMMODE.OBJ.

Nel file eseguibile risultante le chiamate a fflush scrivono il contenuto del buffer direttamente su disco e le chiamate a _flushall scrivono il contenuto di tutti i buffer su disco. Queste due funzioni sono le uniche sulle quali agisce COMMODE.OBJ.

Fine sezione specifica Microsoft

Vedi anche

I/O di flusso
_fdopen, _wfdopen
fopen, _wfopen
Costanti globali