При исследовании того, как заставить файлы записываться как можно быстрее, я видел следующий фрагмент кода в нескольких местах:
_commit(outputFile.rdbuf()->fd());
где outputFile - это объект std :: ofstream. Я в основном делаю следующее:
std::ofstream outputFile;
outputFile.write((char*)blocks, sizeof(blocks));
outputFile.flush();
_commit(outputFile.fd());
outputFile.close();
blocks - это просто массив массивов символов. То, что я делаю, - это запись в массив массивов символов для представления содержимого двоичного файла, а затем отправка этого массива в сам файл. Мне нужно, чтобы файлы записывались как можно быстрее, поскольку носитель является несколько менее надежной флэш-памятью, а вероятность перебоев в электроснабжении необычно высока.
Когда я пытаюсь скомпилировать, я получаю следующую ошибку в строке кода _commit
:
error C2039: 'fd' : is not a member of 'basic_ofstream<char,struct std::char_traits<char> >'
Как мне получить файловый дескриптор файла outputFile и передать его _commit?
РЕДАКТИРОВАТЬ: я изменил приведенный выше код для отражения использования ofstream.fd (), который должен быть открытым членом ofstream .