Windows — C ++ запись файлового потока

Я пишу приложение, которое производит и регистрирует много данных в форме ASCII и двоичного вывода (не смешанный, один или другой в зависимости от журнала). Приложение является однопоточным (должно упростить задачу), и я хочу записать свои данные на диск в том порядке, в котором они были созданы. Мне нужно реализовать метод записи (char * data), который принимает массив символов с нулем в конце и записывает его на диск. В идеале, я хочу, чтобы функция буферизировала данные и возвращала их до того, как данные действительно были записаны на диск … Я полагаю, что для Windows должен быть какой-то способ настроить поток и сделать это в фоновом режиме. Единственное, что меня волнует, это то, что я получаю данные в файле журнала в том порядке, в котором они были записаны. Каков наилучший способ сделать это? Кто-то еще реализовал текущий метод записи, и он выглядит так:

    void writeData(const char* data, int size)
{
if (fp != 0)
fwrite (data, 1, size, fp);
}

fp — указатель файла.

Заголовок C ++ Stdio.h:
http://www.cplusplus.com/reference/cstdio/fwrite/

0

Решение

В многопоточности, может быть, вы можете использовать что-то вроде очереди журнала.
В однопоточности заказ гарантирован

0

Другие решения

Если вы говорите только о Windows, у вас есть два варианта: Перекрытый ввод / вывод через WinAPI или настройте отдельный поток в вашей программе для обработки файлового ввода-вывода (который может быть кроссплатформенным с помощью pthreads)

0

По вопросам рекламы [email protected]