LINUX.ORG.RU

История изменений

Исправление lesopilorama, (текущая версия) :

Юзаем open(), close(), write(), read() на базе int fd. Буфферизацию реализуем своими средствами, так как-то нативнее и кошернее и понятнее. Обычно слой, который хочет записывать в файл, отдаёт уже цепочки блоков по 4 КБ или длиннее, так что проблем нет. Буфферизация в серьёзном приложении всегда какая-то реализована, потому что иначе бы у нас получилась зависимость от библиотеки, которая даёт доступ к файлу. От библиотеки требуется минимум фич - никаких там буферов, а прямой сискол и все довольны. Условно, мы делаем что-то типа MySQL, а там чтение целыми страницами да и записи то же, но обычно более длинными кусками и в самой софтине есть «кеш страниц» и короче всё в страницах меряется и пишется, ничего меньше страницы читать ниоткуда смысла никогда нет. А чаще и десятками мегабайт. Нахрен все эти буферизованые fopen() не уссались нам. Так в целом как-то проще и понятнее жить - не зависишь от буферов в библиотеке, знаешь что их там просто нет. Ну и не факт, что политика «буферирования» внутри libc-шного fread() прям очень оптимальна для твоей приложеньки.

Исправление lesopilorama, :

Юзаем open(), close(), write(), read() на базе int fd. Буфферизацию реализуем своими средствами, так как-то нативнее и кошернее и понятнее. Обычно слой, который хочет записывать в файл, отдаёт уже цепочки блоков по 4 КБ или длиннее, так что проблем нет. Буфферизация в серьёзном приложении всегда какая-то реализована, потому что иначе бы у нас получилась зависимость от библиотеки, которая даёт доступ к файлу. От библиотеки требуется минимум фич - никаких там буферов, а прямой сискол и все довольны. Условно, мы делаем что-то типа MySQL, а там чтение целыми страницами да и записи то же, но обычно более длинными кусками и в самой софтине есть «кеш страниц» и короче всё в страницах меряется и пишется, ничего меньше страницы читать ниоткуда смысла никогда нет. А чаще и десятками мегабайт. Нахрен все эти буферизованые fopen() не уссались нам. Так в целом как-то проще и понятнее жить - не зависишь от буферов в библиотеке, знаешь что их там просто нет. Ну и не факт, что политика «буферирования» прям очень оптимальна для твоей приложеньки.

Исправление lesopilorama, :

Юзаем open(), close(), write(), read() на базе int fd. Буфферизацию реализуем своими средствами, так как-то нативнее и кошернее и понятнее. Обычно слой, который хочет записывать в файл, отдаёт уже цепочки блоков по 4 КБ или длиннее, так что проблем нет. Буфферизация в серьёзном приложении всегда какая-то реализована, потому что иначе бы у нас получилась зависимость от библиотеки, которая даёт доступ к файлу. От библиотеки требуется минимум фич - никаких там буферов, а прямой сискол и все довольны. Условно, мы делаем что-то типа MySQL, а там чтение целыми страницами да и записи то же, но обычно более длинными кусками и в самой софтине есть «кеш страниц» и короче всё в страницах меряется и пишется, ничего меньше страницы читать ниоткуда смысла никогда нет. А чаще и десятками мегабайт. Нахрен все эти буферизованые fopen() не уссались нам.

Исходная версия lesopilorama, :

Юзаем open(), close(), write(), read() на базе int fd. Буфферизацию реализуем своими средствами, так как-то нативнее и кошернее и понятнее. Обычно слой, который хочет записывать в файл, отдаёт уже цепочки блоков по 4 КБ или длиннее, так что проблем нет. Ну это в моём мире.