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

UptoLike

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

33
Функция возвращает –1, если запись не существует или база данных открыта
только для чтения.
Последовательный доступ к данным
Следующие две функции позволяют получить доступ ко всем записям базы
данных. Функция gdbm_firstkey выдает первую запись базы данных, функция
gdbm_nextkey выдает следующую запись.
datum gdbm_firstkey(GDBM_FILE dbf)
datum gdbm_nextkey(GDBM_FILE dbf, datum key)
Функциям передаются следующие параметры:
dbf Указатель, возвращаемый при открытии базы данных.
key Данные ключа.
Возвращаемое значение функцийданные ключа найденной записи. Если поле
dptr структуры данных ключа равно нулю, искомая запись не существует. Функции
выделяют для хранения возвращаемого значения область памяти, которая не
освобождается автоматически.
Порядок просмотра записей файла зависит от хэш-таблицы. При выполнении
каждой операции удаления записи, хэш-таблица пересматривается и порядок просмотра
записей может изменяться.
Реорганизация базы данных
int gdbm_reorganize(GDBM_FILE dbf)
Эта функция должна выполняться очень редко. Если было выполнено много
операций удаления записей и есть необходимость сокращения пространства,
занимаемого базой данных, эта функция реорганизует базу данных. Другими способами
размер базы данных не сокращается.
Для реорганизации создается новый файл, в который вставляю все записи
старого файла, после чего новый файл переименовывается с именем старого. При
большом объеме данных операция может занять довольно продолжительное время.
Функция возвращает отрицательное значение, если произошла ошибка и 0 в
противном случае.
Синхронизация базы данных
Если база данных была открыта с флагом GDBM_FAST, функции библиотеки
не ожидают записи на диск перед возвращением управления в программу. Это
обеспечивает более быстрый доступ к базе данных. Следующая функция позволяет
убедиться в том, что дисковая версия базы данных полностью обновлена:
void gdbm_sync(GDBM_FILE dbf)
Функция обычно вызывается после окончания некоторого множества
изменений в базе данных. Функция gdbm_close автоматически вызывает процедуру
синхронизации, поэтому перед закрытием базы данных в непосредственном вызове
функции синхронизации нет необходимости.
Сообщения об ошибках
Каждая функция библиотеки возвращает код возникшей ошибки в глобальной
переменной errno. Для выдачи текстового сообщения об ошибке, соответствующего
этому коду может быть вызвана следующая функция:
char *gdbm_strerror(gdbm_error errno)
        Функция возвращает –1, если запись не существует или база данных открыта
только для чтения.

       Последовательный доступ к данным
       Следующие две функции позволяют получить доступ ко всем записям базы
данных. Функция gdbm_firstkey выдает первую запись базы данных, функция
gdbm_nextkey выдает следующую запись.
       datum gdbm_firstkey(GDBM_FILE dbf)
       datum gdbm_nextkey(GDBM_FILE dbf, datum key)
        Функциям передаются следующие параметры:
dbf          Указатель, возвращаемый при открытии базы данных.
key          Данные ключа.
        Возвращаемое значение функций – данные ключа найденной записи. Если поле
dptr структуры данных ключа равно нулю, искомая запись не существует. Функции
выделяют для хранения возвращаемого значения область памяти, которая не
освобождается автоматически.
        Порядок просмотра записей файла зависит от хэш-таблицы. При выполнении
каждой операции удаления записи, хэш-таблица пересматривается и порядок просмотра
записей может изменяться.

       Реорганизация базы данных
       int gdbm_reorganize(GDBM_FILE dbf)
        Эта функция должна выполняться очень редко. Если было выполнено много
операций удаления записей и есть необходимость сокращения пространства,
занимаемого базой данных, эта функция реорганизует базу данных. Другими способами
размер базы данных не сокращается.
        Для реорганизации создается новый файл, в который вставляю все записи
старого файла, после чего новый файл переименовывается с именем старого. При
большом объеме данных операция может занять довольно продолжительное время.
        Функция возвращает отрицательное значение, если произошла ошибка и 0 в
противном случае.

       Синхронизация базы данных
       Если база данных была открыта с флагом GDBM_FAST, функции библиотеки
не ожидают записи на диск перед возвращением управления в программу. Это
обеспечивает более быстрый доступ к базе данных. Следующая функция позволяет
убедиться в том, что дисковая версия базы данных полностью обновлена:
       void gdbm_sync(GDBM_FILE dbf)
       Функция обычно вызывается после окончания некоторого множества
изменений в базе данных. Функция gdbm_close автоматически вызывает процедуру
синхронизации, поэтому перед закрытием базы данных в непосредственном вызове
функции синхронизации нет необходимости.

        Сообщения об ошибках
        Каждая функция библиотеки возвращает код возникшей ошибки в глобальной
переменной errno. Для выдачи текстового сообщения об ошибке, соответствующего
этому коду может быть вызвана следующая функция:
       char *gdbm_strerror(gdbm_error errno)




                                                                              33