Сбросьте кэш записи на диск

<Name = "simple"/> не является допустимым элементом XML. Допустимый элемент XML - это что-то вроде

<LogFormat>
    <Name value="simple"/>
    <Format value="simple"/> 
</LogFormat>

или

<LogFormat name="simple" format="simple"/> 
</LogFormat>

. Таким образом, файл конфигурации сервера трафика logs_xml.config не в формате XML, и tinyxml не может его проанализировать.

5
задан George Stocker 28 February 2009 в 20:37
поделиться

4 ответа

Вы не указали среду разработки, таким образом:

.NET

Потоки IO имеют a .Flush метод, который делает то, что Вы хотите.

Win32 API

Существует FlushFileBuffers звоните, который берет дескриптор файла в качестве аргумента.

РЕДАКТИРОВАНИЕ (на основе комментария от OA): FlushFileBuffers не нужны административные привилегии; это делает, только если дескриптор передал ему, дескриптор для объема, не для единственного файла.

2
ответ дан 18 December 2019 в 09:55
поделиться

Из документов Microsoft Вы использовали бы _flushall и ссылку в COMMODE.OBJ, чтобы гарантировать, что все буферы посвятили себя диску.

1
ответ дан 18 December 2019 в 09:55
поделиться

Вам следует не исправить это во время закрытия файла. Windows будет кешировать, если вы не откроете файл, передав FILE_FLAG_WRITE_THROUGH в CreateFile ().

Вы также можете передать FILE_FLAG_NO_BUFFERING ; это говорит Windows не хранить копию байтов в кэше.

Это более эффективно, чем FlushFileBuffers (), согласно документации CreateFile на MSDN.

См. Также буферизацию файлов и кэширование файлов на MSDN.

4
ответ дан 18 December 2019 в 09:55
поделиться

You should also note, that your data might not get flushed to the actual disk, even when invoking a flush method of your frameworks API.

Calling the flush method will only tell the kernel to flush its pages to disk. However, if you have the disk write-cache turned on, it is allowed to delay the actual writing process indefinitely.

In order to ensure that your data gets written to the physical layer you have to turn of the write cache in your operating system. This most often comes with a performance penalty up to one or two orders of magnitude when dealing with a lot of small io-operations. Поддержка батареи (UPS) или диски, которые принимают команды для очистки дискового кэша записи, являются еще одним вариантом решения этой проблемы.

2
ответ дан 18 December 2019 в 09:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: