Книга: Основы программирования в Linux
Подпрограммы dbm
Разделы на этой странице:
Подпрограммы dbm
Как и библиотека curses, обсуждавшаяся нами в главе 6, средство dbm состоит из заголовочного файла и библиотеки, которая должна компоноваться с программой во время компиляции последней. Библиотека называется просто dbm, но поскольку мы обычно применяем в системе Linux реализацию GNU, необходимо компоновать с этой реализацией, используя в строке компиляции опцию -lgdbm
. Заголовочный файл — ndbm.h.
Прежде чем мы попытаемся описать каждую функцию, важно понять чего старается достичь база данных dbm. Когда вы поймете это, гораздо легче будет уяснить, как применять функции dbm.
Основной элемент базы данных dbm — блок данных, предназначенных для хранения, связанный с блоком данных, действующих как ключ для извлечения данных. У всех баз данных dbm должны быть уникальные ключи для каждого хранящегося блока данных. Значение ключа используется как индекс хранящихся данных. Нет ограничений на ключи или данные и не определено никаких ошибок при использовании данных или ключей слишком большого размера. Стандарт допускает реализацию, ограничивающую размер ключа/данных величиной 1023 байта, но, как правило, ограничений не существует, поскольку реализации оказались более гибкими, чем требования, предъявляемые к ним.
Для манипулирования этими блоками как данными в заголовочном файле ndbm.h определен новый тип данных, названный datum
. Конкретное содержимое этого типа зависит от реализации, но он должен, как минимум, включать следующие элементы:
void *dptr;
size_t dsize
Здесь datum
— тип, который будет определяться оператором typedef. В файле ndbm.h также дано определение dbm, представляющее собой структуру, применяемую для доступа к базе данных, и во многом похожее на определение FILE
, используемое для доступа к файлам. Внутреннее содержимое dbm typedef
зависит от реализации и никогда не должно использоваться.
Для ссылки на блок данных при использовании библиотеки dbm вы должны объявить datum
, задать указатель dptr
для указания на начало данных, а также задать параметр dsize
, содержащий размер данных. На хранящиеся данные и индекс, применяемый для доступа к ним, всегда нужно ссылаться с помощью типа datum
.
О типе DBM
лучше всего думать как об аналоге типа FILE
. Когда вы открываете базу данных dbm, обычно создаются два физических файла: один с расширением pag, а другой с расширением dir. Возвращается один указатель dbm, который применяется для обращения к обоим файлам как к паре. Файлы никогда не следует непосредственно читать и в них не нужно писать; они предназначены для доступа через стандартные операции dbm.
Примечание
В некоторых реализациях эти два файла объединены, и создается один новый файл.
Если вы знакомы с базами данных SQL, то заметите, что в случае базы данных dbm не существует структур таблиц или столбцов. Эти структуры не нужны, т.к. dbm не задает фиксированного размера элементов сохраняемых данных и не требует описания внутренней структуры для них. Библиотека dbm работает с блоками неструктурированных двоичных данных.
- Дополнительные функции dbm
- Подпрограммы для работы с файлами через файловые переменные
- Лекция 12. Подпрограммы
- Подпрограммы
- Атрибуты и подпрограммы
- Тело подпрограммы и комментарии к заголовку
- 4.12. Оформление подпрограммы прерывания на Си
- Подпрограммы ввода-вывода
- Подпрограммы для работы с файлами, каталогами и дисками
- Подпрограммы для работы с координатами графического окна
- 2.5.2 вызов подпрограммы
- Подпрограммы для работы с символами и строками