Я использую FUSE для создания файловой системы наложения, где каталоги дополняются виртуальными объектами. Я устанавливаю размер файлов этих объектов равным 0, потому что у меня нет возможности узнать - впереди их читать, что особенно дорого в моем случае - какими они должны быть.Размер файла виртуального файла
Однако, кажется, что существует очевидная оптимизация, поскольку файлы с нулевой длиной не несут никакого звонка read
(только open
и release
).
Мой вопрос, таким образом, просто, что я должен установить размер файла? Я знаю, что символические ссылки имеют размер их длины имени файла; будет ли эта работа, учитывая, что это не символическая ссылка? В противном случае лучшее, что я могу сделать, это обеспечить нижнюю границу для размера ... Если read
имеет только дескриптор файла, размер и смещение файла, предположительно, он читает «til EOF», а не то, что stat
может это сказать.
На каком уровне находится этот зависимый код? На уровне системного вызова он появляется (хотя, вероятно, я ошибаюсь!), Как будто это не важно; на уровне приложения, я знаю, что единственное программное обеспечение, которое читает этот тип файла, не зависит от размера файла ... Я могу дать оценку, если это лучше, на основе нижней границы. – Xophmeister
ОС использует это значение, чтобы определить, когда отправлять EOF. Так что буквально каждый, кто читает данные из файла, нуждается в этом. –
Невозможно поднять этот сигнал самостоятельно? – Xophmeister