Майкл Джонсон - Разработка приложений в среде Linux. Второе издание

Тут можно читать онлайн Майкл Джонсон - Разработка приложений в среде Linux. Второе издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-osnet, издательство Вильямс, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Разработка приложений в среде Linux. Второе издание
  • Автор:
  • Жанр:
  • Издательство:
    Вильямс
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    978-5-8459-1143-8
  • Рейтинг:
    3.8/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Майкл Джонсон - Разработка приложений в среде Linux. Второе издание краткое содержание

Разработка приложений в среде Linux. Второе издание - описание и краткое содержание, автор Майкл Джонсон, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет собой отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из других операционных систем. Подробно рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование свободно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Изобилие хорошо документированных примеров кода помогает лучше усвоить особенности программирования в Linux.

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

Разработка приложений в среде Linux. Второе издание - читать онлайн бесплатно полную версию (весь текст целиком)

Разработка приложений в среде Linux. Второе издание - читать книгу онлайн бесплатно, автор Майкл Джонсон
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Полный исходный код и документацию по библиотеке gdbmможно найти на Web-сайте по адресу http://qdbm.sourceforge.net. В этой главе будут описаны все функции, которые большинство приложений должны использовать для qdbm(каждая из них имеет близкие аналоги в Berkley db, adbmи ndbm). Доступны также и другие функции API, описание которых можно найти на Web-сайте qdbm.

25.1. Обзор

qdbmпредлагает несколько различных API-интерфейсов. Самый основной из них, Depot, является низкоуровневым API, который мы и рассмотрим в этой главе. Интерфейс Curiaпозволяет разбивать базу данных на несколько файлов (для повышения масштабируемости или с целью работы в файловой системе с ограничениями), а функции Villaпредлагают две модели: модель B-деревьев и модель транзакций. API-интерфейс Odeonпозволяет работать с инвертированными индексами [175] Инвертированные индексы представляют собой структуры данных, предназначенные для полнотекстового поиска. . Два последних API, Relicи Hovel, предлагают реализацию таких интерфейсов, как ndbmи qdbm.

Функции Depotобеспечивают выполнение основных операций по схеме "ключ-значение", при этом ключ используется для извлечения значения. Ключ и значение представляют собой произвольные бинарные потоки, размер которых передается отдельно от данных; библиотеке ничего не нужно знать об их структуре. Однако у интерфейса Depotимеется пара функциональных средств, благодаря которым применение строк в качестве ключей и элементов данных становится более удобным. Во-первых, всякий раз при передаче размера ключа или элемента данных в библиотеку вместо них может быть передано значение -1, на основании которого Depotбудет использовать функцию strlen()для вычисления используемого размера. Во-вторых, большинство функций чтения ключей и элементов данных автоматически добавляют к возвращаемому значению байт 0. Этот дополнительный символ не включается в возвращаемый размер, поэтому его можно проигнорировать, если значение не является строкой. Если же это строка, то возвращаемое значение может быть обработано как строка, и приложению не нужно будет завершать ее с помощью NULL.

Depotиспользует глобальную целочисленную переменную dpecodeдля хранения кодов ошибок. Когда функции Depotвозвращают сбой, dpecodeсообщает о том, что произошло (это почти то же самое, что и в случае с переменной errno, которая относится к системным вызовам и библиотеке С). За текстовые сообщения об ошибках отвечает функция dperrmsg().

#include

const char * dperrmsg(int ecode);

Подобно strerror(), функция dperrmsg()принимает код ошибки (обычно из dpecode) и возвращает строку, в которой приводится описание возникшей ошибки.

Функции в API-интерфейсе Depotиспользуют указатель на структуру DEPOT. Это непрозрачная структура (программы, использующие Depot, не могут самостоятельно проверять значения в структуре), однако в ней содержится вся информация, используемая библиотекой для обслуживания файла, хранящегося на диске.

25.2. Основные операции

25.2.1. Открытие файла qdbm

Библиотечная функция dpopen()используется для открытия файлов базы данных.

#include

DB * dpopen(const char * filename, int omode, int bnum);

Первый аргумент представляет имя файла, который будет использоваться для базы данных [176] В отличие от некоторых библиотек баз данных, использующих множество файлов с расширениями .pag и .dir , библиотека Depot использует один файл. . Аргумент omodeопределяет способ доступа к файлу, и должен иметь одно из двух значений: DP_OREADERи DP_OWRITER, в зависимости от того, какой вид доступа к базе данных необходим программе — для чтения или для записи. По умолчанию база данных блокируется, чтобы разрешить нескольким программам доступ для чтения или одной программе доступ для записи. Если приложению не нужна блокировка, производимая qdbm, то DP_ONOLCKможет быть объединен с omodeбитовым "ИЛИ".

Когда приложения создают новые базы данных, они должны также использовать битовое "ИЛИ" с DP_CREATдля отправки qdbmзапроса на создание нового файла, если он еще не был создан. Флаг DP_OTRUNCсигнализирует о том, что первоначальное содержимое filenameбудет удалено и заменено пустой базой данных.

Последний параметр функции dpopen(), bnum, сообщает qdbmо том, сколько сегментов памяти нужно задействовать в хеш-массиве. Чем меньшим будет значение этого параметра, тем меньший размер будет иметь база данных; чем больше будет его значение, тем быстрее она будет работать благодаря сокращению количества конфликтных ситуаций в хеш-памяти. В документации к qdbmрекомендуется, чтобы это значение составляло от половины до величины, в четыре раза большей от того количества элементов, которые, предположительно, будет иметь база данных [177] Хорошее описание хеш-таблиц можно найти в [11]. . Если вы не уверены, какое следует использовать значение, можно присвоить нулевое значение, которое является значением по умолчанию [178] Это значение можно изменить только путем оптимизации базы данных с помощью функции dpoptimize() , описание которой можно найти на Web-сайте qdbm . .

Функция dpopen()возвращает указатель на структуру DEPOT, который передается остальным функциям Depot. В случае возникновения ошибки функция dpopen()возвращает NULLи устанавливает dpecode.

25.2.2. Закрытие базы данных

Чтобы закрыть файлы базы данных, используйте функцию dpclose().

int dpclose(DEPOT * depot);

Функция dpclose()возвращает нулевое значение после успешного закрытия файлов и ненулевое — при сбое, который может произойти из-за невозможности очистки данных из буферов базы данных. Ниже показан пример программы, которая открывает файл базы данных в текущем каталоге и сразу же закрывает его.

1: /* qdbmsimple.c */

2:

3: #include

4: #include

5: #include

6: #include

7:

8: int main(void) {

9: DEPOT * dp;

10:

11: dp = dpopen("test.db", DP_OWRITER | DP_OCREAT, 0);

12: if (!dp) {

13: printf("ошибка: %s\n", dperrmsg(dpecode));

14: return 1;

15: }

16:

17: dpclose(dp);

18:

19: return 0;

20: }

25.2.3. Получение файлового дескриптора

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Майкл Джонсон читать все книги автора по порядку

Майкл Джонсон - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Разработка приложений в среде Linux. Второе издание отзывы


Отзывы читателей о книге Разработка приложений в среде Linux. Второе издание, автор: Майкл Джонсон. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x