Я прочитал пару вопросов ( здесь ), связанных с этим, но у меня все еще есть некоторая путаница.
Насколько я понимаю, системный вызов write помещает данные в Buffered Cache
(кэши ОС, как указано в этом вопросе). Когда Buffered Cache
заполняется, он записывается на диск.
Буферизованный ввод-вывод - это дальнейшая оптимизация. Он кэшируется в C RTL buffers
, а когда они заполняются, выдается системный вызов write
для перемещения содержимого в Buffered Cache
. Если я использую fflush
, то на диск отправляются данные, относящиеся к этому конкретному файлу, который присутствует в C RTL buffers
, а также Buffered Cache
.
Правильно ли мое понимание?