Windows эквивалентна sync () - PullRequest
3 голосов
/ 28 сентября 2011

Я делаю большую часть своего программирования на встроенных процессорах или на Linux. Когда мне нужно синхронизировать данные с моим постоянным хранилищем, я обычно использую системный вызов sync (2). Есть ли эквивалент для Windows?

Ответы [ 4 ]

4 голосов
/ 28 сентября 2011

http://msdn.microsoft.com/en-us/library/aa364439(VS.85).aspx http://www.codeproject.com/KB/system/EjectMediaByLetter.aspx

FlushFileBuffers с ручкой для объема. Вы должны сделать это для каждого тома: (

3 голосов
/ 28 сентября 2011

Используйте FlushFileBuffers , но вам нужен дескриптор файла, который вы хотите сбросить.

0 голосов
/ 18 июля 2019

Смотрите здесь: https://jeffpar.github.io/kbarchive/kb/066/Q66052/

Когда вы первоначально открываете свой файл с помощью fopen, включите опцию режима "c" в качестве ПОСЛЕДНЕЙ ВАРИАНТЫ:

fopen( path, "wc") // w - write mode, c - allow immediate commit to disk

Затем, когда вы хотите принудительно выполнить сброс на диск, позвоните

_flushall()

Мы звонили до звонка

fclose()

Обратите внимание, что этот подход НЕ требует административных прав, которые FlushFileBuffers требует .

С этого сайта:

"Microsoft C / C ++ версии 7.0 представляет опцию режима" c "для fopen () функция. Когда приложение открывает файл и указывает режим «с», библиотека времени выполнения записывает содержимое буфера файлов на диск, когда Приложение вызывает функцию fflush () или _flushall (). «

0 голосов
/ 28 сентября 2011

Если вы используете функции файла posix (fopen () и т. Д.), Вы можете использовать _flushall:

http://msdn.microsoft.com/en-us/library/s9xk9ehd%28v=vs.80%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...