Читаем Программирование для Linux. Профессиональный подход полностью

/*** Символические константы файла common.c. ********************/

/* Имя программы. */

extern const char* program_name;

/* Если не равна нулю, отображаются развернутые сообщения. */

extern int verbose;

/* Напоминает функцию malloc(), не прерывает работу программы,

   если выделить память не удалось. */

extern void* xmalloc(size_t size);

/* Напоминает функцию realloc(), но прерывает работу программы,

   если выделить память не удалось */

extern void* xrealloc(void* ptr, size_t size);

/* Напоминает функцию strdup(), но прерывает работу программы,

   если выделить память не удалось. */

extern char* xstrdup(const char* s);

/* Выводит сообщение об ошибке заданного системного вызова

   и завершает работу программы. */

extern void system_error(const char* operation);

/* Выводит сообщение об ошибке и завершает работу программы. */

extern void error(const char* cause, const char* message);

/* Возвращает имя каталога, содержащего исполняемый файл

   программы. Поскольку возвращается указатель на область памяти,

   вызывающая подпрограмма должна удалить ее с помощью

   функции free(). В случае неудачи выполнение программы

   завершается. */

extern char* get_self_executable_directory();

/*** Символические константы файла module.с *********************/

/* Экземпляр загруженного серверного модуля. */

struct server_module {

 /* Дескриптор библиотеки, в которой находится модуль. */

 void* handle;

 /* Описательное имя модуля. */

 const char* name;

 /* Функция, генерирующая HTML-код для модуля. */

 void (*generatе_function)(int);

};

/* Каталог, из которого загружаются модули. */

extern char* module_dir;

/* Функция, пытающаяся загрузить указанный серверный модуль.

   Если модуль существует, возвращается структура

   с его описанием, в противном случае возвращается NULL. */

extern struct server_module* module_open(const char* module_path);

/* Закрытие модуля и удаление объекта MODULE. */

extern void module_close(struct server_module* module);

/*** Символические константы файла server.c. ********************/

/* Запуск сервера по адресу LOCAL_ADDRESS и порту PORT. */

extern void server_run(struct in_addr local_address, uint16_t port);

#endif /* SERVER_H */

<p>11.2.1. Общие функции</p>

Файл common.c (листинг 11.2) содержит функции общего назначения, используемые в разных частях программы.

Листинг 11.2. (common.c) Функции общего назначения

#include

#include

#include

#include

#include

#include "server.h"

const char* program_name;

int verbose;

void* xmalloc(size_t size) {

 void* ptr = malloc(size);

 /* Аварийное завершение, если выделить память не удалось. */

 if (ptr == NULL)

  abort();

 else

  return ptr;

}

void* xrealloc(void* ptr, size_t size) {

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных