c - commit skriver

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg programmerer win32 ved hjælp af fop fread fwrite i C.


Hvordan kan jeg tvinge vinduer til at skrive data til disken? Er der end et API-opkald til dette?


Jeg har et program, der absolut skal sørge for, at data gemmes på disken, før det gemmes til en anden indekseringsfil, ellers hvis der er nedbrud, kan indeksfilen til tider opdatere, men den anden fil forårsager ikke en dårlig inkonsekvens.

Bedste reference


fflush () gør hvad du vil. Hvis du beslutter at bruge Win32 API'erne til at gøre din fil IO i stedet for C STDIO lib, skal du forsyne FILE\_FLAG\_WRITE\_THROUGH flag til CreateFile (), hvilket gør præcis, hvad du vil.

Andre referencer 1


Brug fflush funktion efter hver fwrite [3]

Andre referencer 2


Se funktionen \_commit. Også på denne anden MSDN side. Dette fungerer kun med \_open og andre funktioner, så se denne artikel - du kan linke dit program med commode.obj for at få fflush til at forpligte sig til disken. [4] [5] [6]

Andre referencer 3


Pas på, at uanset hvilken funktion du bruger, vil dette ikke spare dig mod strømbrud eller hard reset. Harddiske spiller smarte og kan rapportere, at skrivningen er færdig, selvom de lige har lagt dataene i cache og ikke har skrevet det på overfladen.