Как воспроизвести потерю данных из-за неочистки буферов ядра?Linux

Anonymous
Как воспроизвести потерю данных из-за неочистки буферов ядра?

Сообщение Anonymous »

Недавно я столкнулся с проблемой в своей среде разработки Linux. Я написал функцию для экспорта результатов в файл Excel, запускаемую нажатием кнопки. После выполнения функции она очищает буфер пользовательского пространства и отображает диалоговое окно «успех». Однако если пользователь слишком быстро извлекает USB-накопитель, файл не сохраняется на нем, даже если появляется диалоговое окно.
Я понимаю, что это происходит, потому что данные все еще находятся в буфер ядра и не был записан на оборудование. Я решил проблему с помощью fsync.
Теперь я хочу систематически тестировать и воспроизводить эту проблему. Как лучше всего это сделать?
Я пробовал различные подходы, например, выполнение команды на отключение USB-накопителя сразу после завершения функции записи, а также другие действия. Я даже пытался сделать это вручную, но не смог воспроизвести проблему.
Я знаю, что эта проблема связана с буфером ядра, но не могу найти простой пример, чтобы воспроизвести ее. эффективно, что весьма расстраивает.

Подробнее здесь: https://stackoverflow.com/questions/793 ... el-buffers

Вернуться в «Linux»