Лекции по курсу "Системное программирование для UNIX". Литвинов Д.Г. - 31 стр.

UptoLike

Составители: 

31
Библиотека GDBM
GDBM – библиотека функций для работы с хешированной базой данных.
Основная сфера применения GDBM – хранение пар ключ/данные в файле данных.
Каждый ключ должен быть уникальным, каждому ключу должен соответствовать
только одно значение данных. Ключи не могут быть считаны в сортированном порядке.
Модули данных, хранимые в базе данных, задаются с помощью следующей структуры:
typedef struct {
char *dptr;
int dsize;
} datum;
Структура позволяет использовать ключи и данные произвольного размера.
Пары ключ/данные хранятся в дисковом файле, называемом базой данных
gdbm. Приложение должно открыть базу данных прежде чем начать работать с
ключами и данными, включенными в базу данных. Библиотека позволяет приложению
открывать несколько баз данных в один момент времени. Когда приложение открывает
базу данных с правами чтения или записи. В каждый момент времени база данных
может быть открыта только одним приложением, у которого имеются права на запись
или несколькими приложениями с правами на чтение. Открыть одновременно базу
данных различными приложениями на чтение и запись невозможно.
Все функции библиотеки определены в заголовочном файле <gdbm.h>.
Открытие базы данных
GDBM_FILE gdbm_open(char *name, int block_size, int flags,
int mode, void (*fatal_func)())
Функция инициализирует систему gdbm. Если файл имеет нулевой размер,
выполняется процедура инициализации файла, устанавливающая начальную структуру
файла. При вызове задаются следующие параметры:
name Имя файла базы данных.
block_size Используется при инициализации базы данных и задает размер блока
обмена между оперативной памятью и диском. Если задаваемое
значение меньше 512, то используется стандартное значение, иначе
задаваемое программой.
flags Поле может принимать следующие значения:
- GDBM_READER – доступ к существующей базе данных в режиме
чтения;
- GDBM_WRITER – доступ к существующей базе данных в режиме
чтения и записи;
- GDBM_WRCREAT – если база не существует, создается новая,
пользователь получает доступ в режиме записи и чтения;
- GDBM_NEWDB – создается новая запись независимо от того
существует ли файл базы данных или нет, пользователь получает
доступ в режиме чтения и записи.
К флагам GDBM_WRITER, GDBM_WRCREAT, GDBM_NEWDB может
быть добавлен флаг GDBM_FAST, которая указывает, что необходимо
записывать данные в базу данных без синхронизации с файлом на
диске. Это увеличивает быстродействие, однако может привести к
неправильным данным в файле в случае возникновения фатальной
ошибки.
mode Режим открытия файла. Идентичен режимам, задаваемым функциями
open и chmod.
       Библиотека GDBM
        GDBM – библиотека функций для работы с хешированной базой данных.
Основная сфера применения GDBM – хранение пар ключ/данные в файле данных.
Каждый ключ должен быть уникальным, каждому ключу должен соответствовать
только одно значение данных. Ключи не могут быть считаны в сортированном порядке.
Модули данных, хранимые в базе данных, задаются с помощью следующей структуры:
       typedef struct {
                  char *dptr;
                  int dsize;
               } datum;
        Структура позволяет использовать ключи и данные произвольного размера.
        Пары ключ/данные хранятся в дисковом файле, называемом базой данных
gdbm. Приложение должно открыть базу данных прежде чем начать работать с
ключами и данными, включенными в базу данных. Библиотека позволяет приложению
открывать несколько баз данных в один момент времени. Когда приложение открывает
базу данных с правами чтения или записи. В каждый момент времени база данных
может быть открыта только одним приложением, у которого имеются права на запись
или несколькими приложениями с правами на чтение. Открыть одновременно базу
данных различными приложениями на чтение и запись невозможно.
        Все функции библиотеки определены в заголовочном файле .

       Открытие базы данных
       GDBM_FILE gdbm_open(char *name, int block_size, int flags,
            int mode, void (*fatal_func)())
        Функция инициализирует систему gdbm. Если файл имеет нулевой размер,
выполняется процедура инициализации файла, устанавливающая начальную структуру
файла. При вызове задаются следующие параметры:
name          Имя файла базы данных.
block_size    Используется при инициализации базы данных и задает размер блока
              обмена между оперативной памятью и диском. Если задаваемое
              значение меньше 512, то используется стандартное значение, иначе –
              задаваемое программой.
flags         Поле может принимать следующие значения:
              - GDBM_READER – доступ к существующей базе данных в режиме
              чтения;
              - GDBM_WRITER – доступ к существующей базе данных в режиме
              чтения и записи;
              - GDBM_WRCREAT – если база не существует, создается новая,
              пользователь получает доступ в режиме записи и чтения;
              - GDBM_NEWDB – создается новая запись независимо от того
              существует ли файл базы данных или нет, пользователь получает
              доступ в режиме чтения и записи.
              К флагам GDBM_WRITER, GDBM_WRCREAT, GDBM_NEWDB может
              быть добавлен флаг GDBM_FAST, которая указывает, что необходимо
              записывать данные в базу данных без синхронизации с файлом на
              диске. Это увеличивает быстродействие, однако может привести к
              неправильным данным в файле в случае возникновения фатальной
              ошибки.
mode          Режим открытия файла. Идентичен режимам, задаваемым функциями
              open и chmod.


                                                                              31