Реализация файловой системы FUSE: iostream, FILE * или простые файловые дескрипторы? - PullRequest
2 голосов
/ 20 мая 2011

Я реализовал небольшую файловую систему FUSE только для чтения в C ++, которая считывает данные из определенного многофайлового архива.Я использовал iostreams (фактически boost::filesystem::ifstream) для чтения файлов.Теперь я задаюсь вопросом, было ли это мудрым решением.

Сначала сообщения об ошибках iostreams ужасны (см. другой вопрос мной ), и я не могу просто вернуть errno мой файлвызванные операции.Но во-вторых, мне интересно, может быть, лучше использовать небуферизованный ввод-вывод при реализации файловой системы FUSE (не для чтения индекса архива, а для чтения файлов - это несжатый архив, в котором файлы никогда не разделяются на несколько архивных файлов).Потому что приложение, читающее файл, будет буферизоваться, если захочетЯвляется ли эта буферизация просто ненужными накладными расходами?

Кроме того, насколько быстры (повышают) iostreams?Что ж, я могу без проблем воспроизводить файлы WAV из смонтированного архива, но мне все же интересно, добавляют ли iostream ненужные накладные расходы, когда они мне действительно не нужны (единственное преимущество, которое они предоставляют, заключается в том, что они автоматически закрывают файл, когда выходят из области видимости).

...