Книга: Основы программирования в Linux

Приложение для работы с базой данных компакт-дисков

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

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

Примечание

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

Выполнение команды server -i позволяет программе инициализировать новую базу данных компакт-дисков.

Нет нужды говорить о том, что клиент не выполнится, пока сервер не установится и не запустится. Далее приведен make-файл, показывающий, как совмещаются программы:

all: server client
CC=cc
CFLAGS= -pedantic -Wall
# Для отладки удалите знак комментария в следующей строке
# DFLAGS=-DDEBUG_TRACE=1 -g
# Где и какую версию dbm мы применяем.
# Предполагается, что gdbm предустановлена в стандартном месте, но мы
# собираемся применять подпрограммы, совместимые с gdbrn, которые
# заставляют ее эмулировать ndbm. Делается это потому, что ndbm — 'самая
# стандартная' из версий dbm. Возможно, вам потребуется внести изменения
# в соответствии с вашим дистрибутивом.
DBM_INC_PATH=/usr/include/gdbm
DBM_LIB_PATH=/usr/lib
DBM_LIB_FILE=-lgdbm
# В некоторых дистрибутивах может понадобиться изменить предыдущую
# строку, чтобы включить библиотеку совместимости, как показано далее.
# DBM_LIB_FILE=-lgdbm_compat -lgdbm
.с.о:
 $(CC) $(CFLAGS) -I$(DBM_INC_PATH) $(DFLAGS) -с $<
app_ui.o: app_ui.c cd_data.h
cd_dbm.o: cd_dbm.c cd_data.h
client_f.o: client_f.c cd_data.h cliserv.h
pipe_imp.o: pipe_imp.c cd_data.h cliserv.h
server.о: server.с cd_data.h cliserv.h
client: app_ui.o clientif.o pipe_imp.o
 $(CC) -o client $(DFLAGS) app_ui.о clientif.o pipe_imp.o
server: server.о cd_dbm.o pipe_imp.o
 $(CC) -o server -L$(DBM_LIB_PATH) $(DFLAGS) server.о cd_dbm.o pipe_imp.o -l$(DBM_LIB_FILE)
clean:
 rm -f server client_app *.o *~

Оглавление книги


Генерация: 0.102. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз