| hash(3) | Library Functions Manual | hash(3) |
hash - метод доступа к базе данных ассоциативных массивов
Стандартная библиотека языка C (libc, -lc)
#include <sys/types.h> #include <db.h>
Примечание: На этой странице описаны интерфейсы, предоставляемые до glibc 2.1. Начиная с glibc 2.2, glibc больше не поддерживает эти интерфейсы. Вероятно, вы ищите API, предоставляемое библиотекой libdb.
Функция dbopen(3) — это библиотечный интерфейс к файлам баз данных. Один из поддерживаемых форматов файлов — hash. Общее описание методов доступа к базам данных находится в dbopen(3). Эта справочная страница содержит только информацию, относящуюся к ассоциативным массивам.
Структура данных ассоциативных массивов (хэш) расширяемая и динамична.
Специальная структура метода доступа данных, к которой обращается dbopen(3), задана в <db.h> следующим образом:
typedef struct {
unsigned int bsize;
unsigned int ffactor;
unsigned int nelem;
unsigned int cachesize;
uint32_t (*hash)(const void *, size_t);
int lorder;
} HASHINFO;
Элементы этой структуры имеют следующее назначение:
Если файл уже существует (и не задан флаг O_TRUNC), то значения, определённые в параметрах bsize, ffactor, lorder и nelem, игнорируются, и используются значения, которые были указаны при создании дерева.
Если определена хэш-функция, то hash_open пытается определить, совпадает ли эта функция с той, что использовалась при создании файла, и завершается ошибкой, если это не так.
Обратно совместимый интерфейс, определённый в dbm(3) и ndbm(3), также существует, но он не совместим с предыдущими реализациями по формату файлов.
Функции метода доступа hash могут завершиться с ошибкой и присвоить errno любое значение из определённых для библиотеки функций dbopen(3).
Поддерживаются значения только с прямым и обратным порядком байт.
btree(3), dbopen(3), mpool(3), recno(3)
Dynamic Hash Tables, Per-Ake Larson, Communications of the ACM, April 1988.
A New Hash Package for UNIX, Margo Seltzer, USENIX Proceedings, Winter 1991.
Русский перевод этой страницы руководства разработал(и) Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
| 2 мая 2024 г. | 4.4 Berkeley Distribution |