Чтение онлайн

на главную - закладки

Жанры

Основы программирования в Linux
Шрифт:

14. Как всегда, начните с имеющих смысл проверок:

 if (!cdc_dbm_ptr || !cdt_dbm_ptr) return (entry_to_return);

 if (!cd_catalog_ptr || !first_call_ptr) return (entry_to_return);

 if (strlen(cd_catalog_ptr) >= CAT_CAT_LEN) return (entry_to_return);

 /* Защита от пропуска вызова с *first_call_ptr, равным true */

 if (local_first_call) {

local_first_call = 0;

*first_call_ptr = 1;

 }

15. Если эта функция была вызвана с параметром

*first_call_ptr
, равным
true
, вы должны продолжить (или заново начать) поиск от начала базы данных. Если
*first_call_ptr
не равен
true
, просто переходите к следующему ключу в базе данных:

 if (*first_call_ptr) {

*first_call_ptr = 0;

local_key_datum = dbm_firstkey(cdc_dbm_ptr);

 } else {

local_key_datum = dbm_nextkey(cdc_dbm_ptr);

 }

 do {

if (local_key_datum.dptr != NULL) {

/* Элемент был найден */

local_data_datum = dbm_fetch(cdc_dhm_ptr, local_key_datum);

if (local_data_datum.dptr) {

memcpy(&entry_to_return, (char*)local_data_datum.dptr, local_data_datum, dsize);

16. Функция поиска включает очень простую проверку, позволяющую увидеть, входит ли строка поиска в текущий элемент каталога.

/* Проверяет, входит ли строка в текущий элемент */

if (!strstr(entry_to_return.catalog, cd_catalog_ptr)) {

memset(&entry_to_return, '\0', sizeof(entry_to_return));

local_key_datum = dbm_nextkey(cdc_dbm_ptr);

}

}

}

 } while (local_key_datum.dptr && local_data_datum.dptr &&

(entry_to_return.catalog[0] == '\0'));

 return (entry_to_return);

} /* search_cdc_entry */

Теперь вы готовы собрать все вместе с помощью следующего make-файла или файла сборки. Не слишком углубляйтесь в него сейчас, поскольку мы обсудим его работу в следующей главе. В данный момент просто наберите его и сохраните как Makefile.

all: application

INCLUDE=/usr/include/gdbm LIBS=gdbm

# В некоторых дистрибутивах вам, возможно, придется изменить предыдущую

# строку, чтобы включить библиотеку совместимости, как показано далее

# LIBS= -lgdbm_compat -lgdbm

CFIAGS=

app_ui.о: app_ui.с cd_data.h

 gcc $(CFLAGS) -c app_ui.c

access.о: access.с cd_data.h

 gcc $(CFLAGS) -I$(INCLUDE) -c access.с

application: app_ui.o access.о

 gcc $(CFLAGS) -o application app_ui.o access.о -l$(LIBS)

clean:

 rm -f application *.o

nodbmfiles:

 rm -f *.dir *.pag

Для компиляции вашего нового приложения управления коллекцией компакт- дисков наберите следующую команду в командной строке:

$ make

Если все пройдет нормально, выполняемый файл application будет откомпилирован и помещен в текущий каталог.

Резюме

В этой главе вы узнали о трех аспектах управления данными. Сначала вы познакомились с системой управления памятью в ОС Linux, и убедились в простоте ее применения, несмотря на то, что на низком уровне в нее включена реализация виртуальной памяти с подкачкой страниц. Вы также увидели, как она защищает операционную систему и другие программы от попыток несанкционированного доступа к памяти.

Затем мы перешли к рассмотрению того, как блокировка файлов позволяет многочисленным программам сотрудничать при получении доступа к данным. Сначала вы познакомились с простой двоичной схемой семафора и затем более сложной ситуацией, в которой вы блокируете участки файла, устанавливая разделяемый или исключительный доступ. Далее вы рассмотрели библиотеку dbm и ее возможности хранения и эффективного извлечения блоков данных благодаря очень гибкому механизму индексирования.

В заключение, применив dbm как средство хранения данных, мы переработали проектное решение и заново переписали пример приложения, управляющего базой данных компакт-дисков.

Глава 8

MySQL

Теперь, когда вы изучили основы управления данными с помощью обычных файлов и затем посредством простой, но очень быстрой базы данных dbm, можно перейти к полнофункциональному средству работы с данными: СУРБД или системе управления реляционной базы данных (Relational Database Management System, RDBMS).

Два самых известных приложения СУРБД с открытым исходным кодом — это PostgreSQL и MySQL, хотя существует и множество других. Есть также много коммерческих СУРБД, таких как Oracle, Sybase и DB2, все они многофункциональны и могут действовать на различных платформах. Работающая только под управлением ОС Windows система Microsoft SQL Server — еще одно популярное средство на коммерческом рынке СУБД. У всех этих программных продуктов есть свои достоинства, но с учетом занимаемого пространства и принадлежности к программному обеспечению с открытым кодом авторы книги сосредоточились исключительно на СУРБД MySQL.

Поделиться:
Популярные книги

Кровь Севера

Мазин Александр Владимирович
3. Викинг
Фантастика:
альтернативная история
9.14
рейтинг книги
Кровь Севера

Корона мечей

Джордан Роберт
7. Колесо Времени
Фантастика:
фэнтези
8.62
рейтинг книги
Корона мечей

Будущее разума

Каку Митио
Научно-образовательная:
прочая научная литература
физика
8.00
рейтинг книги
Будущее разума

Бремя власти

Балашов Дмитрий Михайлович
3. Государи московские
Научно-образовательная:
история
7.25
рейтинг книги
Бремя власти

Дьявольская секта (Сборник)

Саган Франсуаза
Бестселлер
Детективы:
криминальные детективы
боевики
5.00
рейтинг книги
Дьявольская секта (Сборник)

Директива Джэнсона

Ладлэм Роберт
Детективы:
шпионские детективы
7.00
рейтинг книги
Директива Джэнсона

Ключник

Зайцев Сергей Григорьевич
2. Викс
Фантастика:
фэнтези
рпг
попаданцы
9.25
рейтинг книги
Ключник

Архимаг. Пробуждение. Трилогия

Рудазов Александр
56. В одном томе
Фантастика:
научная фантастика
9.32
рейтинг книги
Архимаг. Пробуждение. Трилогия

Самодержец пустыни

Юзефович Леонид Абрамович
Проза:
историческая проза
6.25
рейтинг книги
Самодержец пустыни

Шайтан Иван 5

Тен Эдуард
5. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
5.50
рейтинг книги
Шайтан Иван 5

Санкт-Петербург. Автобиография

Королев Кирилл Михайлович
Научно-образовательная:
история
5.00
рейтинг книги
Санкт-Петербург. Автобиография

Печать мастера

Лисина Александра
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Печать мастера

Том 2. Рассказы и пьесы 1904-1907

Андреев Леонид Николаевич
2. Собрание сочинений в шести томах
Проза:
русская классическая проза
5.00
рейтинг книги
Том 2. Рассказы и пьесы 1904-1907

Локки 7. Потомок бога

Решетов Евгений Валерьевич
7. Локки
Фантастика:
аниме
эпическая фантастика
фэнтези
5.00
рейтинг книги
Локки 7. Потомок бога