История изменений
Исправление 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 КБ или длиннее, так что проблем нет. Ну это в моём мире.