Читаем Основы программирования в Linux полностью

Если вы знакомы с базами данных SQL, то заметите, что в случае базы данных dbm не существует структур таблиц или столбцов. Эти структуры не нужны, т.к. dbm не задает фиксированного размера элементов сохраняемых данных и не требует описания внутренней структуры для них. Библиотека dbm работает с блоками неструктурированных двоичных данных.

Функции доступа dbm

Теперь, когда мы рассказали об основах работы библиотеки dbm, можем поподробнее рассмотреть функции. Далее приведены прототипы основных функций dbm.

#include

DBM *dbm_open(const char* filename, int file_open_flags,

 mode_t file_mode);

int dbm_store(DBM *database_descriptor, datum key, datum content,

 int store_mode);

datum dbm_fetch(DBM* database descriptor, datum key);

void dbm_close(DBM *database descriptor);

dbm_open

Эта функция применяется для открытия имеющихся баз данных и для создания новых баз данных. Аргумент filename — имя файла базы данных без расширения dir или pag.

Остальные параметры такие же, как второй и третий параметры функции open, с которой вы встречались в главе 3. Вы можете использовать те же директивы #define. Второй аргумент управляет возможностью чтения базы данных, записью в нее или обеими операциями. Если создается новая база данных, флаги должны быть двоичными O_READ с O_CREAT, чтобы разрешить создание файлов. Третий аргумент задает начальные права доступа к файлам, которые будут созданы.

Функция dbm_open возвращает указатель на тип DBM. Он применяется во всех последующих обращениях к базе данных. В случае аварийного завершения возвращается (DBM*)0.

dbm_store

Эту функцию применяют для ввода данных в базу данных. Как упоминалось ранее, все данные должны сохраняться с уникальным индексом. Для определения данных, которые вы хотите сохранить, и индекса, используемого для ссылки на них, следует задать два типа datum: один для ссылки на индекс, а другой — на реальные данные. Последний параметр store_mode управляет действиями, совершаемыми при попытке сохранить какие-либо данные с применением ключа, который уже существует. Если установлено значение параметра dbm_insert, сохранение завершается аварийно и функция dbm_store возвращает 1. Если установлено значение параметра dbm_replace, новые данные заменяют существующие и dbm_store возвращает 0. При возникновении других ошибок функция dbm_store возвращает отрицательные числа.

dbm_fetch

Подпрограмма dbm_fetch применяется для извлечения данных из базы данных. Она принимает в качестве параметра указатель dbm, возвращенный предшествующим вызовом функции dbm_open и тип datum, который должен быть задан как указатель на ключ. Тип datum возвращается, если данные, относящиеся к используемому ключу, найдены в базе данных, возвращаемая структура datum будет иметь значения dptr и dsize, ссылающиеся на возвращенные данные. Если ключ не найден, dptr будет равен null.

Примечание

Важно помнить, что функция dbm_fetch возвращает только параметр типа datum, содержащий указатель на данные. Реальные данные могут находиться в локальной области памяти внутри библиотеки dbm и должны быть скопированы в переменные программы перед дальнейшими вызовами функций dbm.

dbm_close

Эта подпрограмма закрывает базу данных, открытую функцией dbm_open, и должна получить указатель DBM, возвращенный предшествующим вызовом dbm_open.

А теперь выполните упражнение 7.12.

Упражнение 7.12. Простая база данных dbm

Познакомившись с основными функциями базы данных dbm, теперь вы знаете, как написать вашу первую программу для работы с dbm (dbm1.c). В этой программе применяется структура, названная test_data.

1. Первыми представлены файлы #include, директивы #define, функция main и объявление структуры test_data:

#include 

#include

#include

#include

#include

/* В некоторых системах вам нужно заменить вышестоящую строку строкой #include */

#include

#define TEST_DB_FILE "/tmp/dbm1_test"

#define ITEMS_USED 3


struct test_data {

 char misc_chars[15];

 int any_integer;

 char more_chars[21];

};


int main() {

Перейти на страницу:

Похожие книги

Полное руководство по Microsoft Windows XP
Полное руководство по Microsoft Windows XP

В книге известного американского автора описывается среда ОС Windows XP и принципы ее функционирования, приведен сравнительный анализ Windows XP с предшествующими версиями операционной системы Windows. Рассматриваются вопросы применения и модификации нового интерфейса с целью получения прямого доступа ко всем функциям Windows XP обсуждаются варианты подключения к компьютерным сетям. Несколько разделов посвящены работе с реестром и конфигурационными файлами, мультимедийным функциям и разнообразным системным службам, а также методам решения проблем с программным обеспечением и оборудованием. Особое внимание уделено обеспечению безопасности операционной системы.Издание адресовано пользователям и сетевым администраторам, желающим активно применять возможности операционной системы Windows XP (в том числе и недокументированные).

Джон Поль Мюллер , Питер Нортон

ОС и Сети / Книги по IT
Сетевые средства Linux
Сетевые средства Linux

В этой книге описаны принципы действия и область применения многих серверов, выполняющихся в системе Linux. Здесь рассматриваются DHCP-сервер, серверы Samba и NFS, серверы печати, NTP-сервер, средства удаленной регистрации и система X Window. He забыты и средства, традиционно используемые для обеспечения работы Internet-служб: серверы DNS, SMTP, HTTP и FTP. Большое внимание уделено вопросам безопасности сети. В данной книге нашли отражения также средства удаленного администрирования — инструменты Linuxconf, Webmin и SWAT.Данная книга несомненно окажется полезной как начинающим, так и опытным системным администраторам.Отзывы о книге Сетевые средства LinuxПоявилась прекрасная книга по Linux, осталось воспользоваться ею. Не упустите свой шанс.Александр Стенцин, Help Net Security, www.net-security.orgЕсли вы стремитесь в полной мере использовать сетевые возможности Linux — эта книга для вас. Я настоятельно рекомендую прочитать ее.Майкл Дж. Джордан, Linux OnlineВыхода подобной книги давно ожидали читатели. Менее чем на 700 страницах автор смог изложить суть самых различных вопросов, связанных с работой Linux. Автор является высококвалифицированным специалистом в своей области и щедро делится своими знаниями с читателями.Роджер Бертон, West, DiverseBooks.com

Родерик В. Смит

ОС и Сети, интернет / ОС и Сети / Книги по IT