Проверка активности ядра СУБД ЛИНТЕР
Назначение
Проверка активности запущенного ранее ядра СУБД ЛИНТЕР.
Синтаксис
L_LONG LinDatabaseControl(t_LINDBCtrl* LINDBCtrl, LIN_DATABASE_ALIVE,L_LONG Flags);
Входные данные
Входными данными являются:
-
инициализированная управляющая структура LINDBCtrl;
-
идентификатор
LIN_DATABASE_ALIVE
команды «Проверка активности ядра СУБД ЛИНТЕР»; -
флаги Flags, модифицирующие поведение команды.
Допустимые флаги:
Флаг | Значение | |
---|---|---|
LIN_DATABASE_ALIVE_SIG | Проверка активности ядра СУБД с помощью сигнала |
Выходные данные
Выходными данными является управляющая структура LINDBCtrl.
В управляющей структуре будут возвращены:
Имя поля | Значение | |
---|---|---|
RetStatus | Библиотечный код завершения | |
SysStatus | Системный код завершения |
Описание
На компьютере могут быть активны несколько ядер СУБД ЛИНТЕР. Функция проверяет активность того ядра, путь к которому прописан в поле LinterPath управляющей структуры LINDBCtrl. Если это поле не инициализировано, фиксируется ошибка.
Под активностью ядра понимается возможность получать данные от процессов ОС и посылать им ответы. Ядро, активное с точки зрения процессора (работает в непрерываемом цикле), не является активным с точки зрения данной функции.
По умолчанию проверка активности запущенного ранее ядра СУБД ЛИНТЕР (или ядра, к которому ранее было выполнено подключение командой LIN_DATABASE_ATTACH
) выполняется путем запуска программы chklinter. Программа chklinter должна находиться в подкаталоге /bin
каталога, заданного в поле LinterPath.
Если установлен флаг LIN_DATABASE_ALIVE_SIG
, проверка активности ядра будет выполняться путем посылки 0 сигнала.
Возвращаемые значения
Функция возвращает:
-
0
– нормальное завершение; -
-1
– активность ядра СУБД не проверена, работа ядра остановлена.
Коды завершения
Код | Описание | |
---|---|---|
E_LINCTRL_CHKFAILED | Программа chklinter не подтвердила активность ядра (неудачный код завершения chklinter) | |
E_LINCTRL_KILLFAILED | Неудачная проверка активности ядра с помощью сигнала | |
E_LINCTRL_RUN | Неудачный запуск программы chklinter | |
E_LINCTRL_NOMEM | Невозможность выделения динамической памяти для полей управляющей структуры LINDBCtrl | |
E_LINCTRL_LINPID | Pid ядра СУБД ЛИНТЕР неизвестен. Не выполнена команда LIN_DATABASE_ATTACH или LIN_DATABASE_RUN |
Пример
#include < stdio.h > #include < stdlib.h > #include < string.h > #include "linctrl.h" #include "exlib.h" void PrintError(t_LINDBCtrl *LINDBCtrl); void main() { t_LINDBCtrl LINDBCtrl; CHAR LinterPath[]="/usr/linter"; LONGINT Err; Err=LINDBCtrlInit(&LINDBCtrl,LinterPath); if (Err != NORMAL) PrintError(&LINDBCtrl); printf("Initialisation LINDBCtrl\n"); Err=LinDatabaseControl(LINDBCtrl, LIN_DATABASE_ALIVE, LIN_DATABASE_ALIVE_SIG); If (Err != NORMAL) PrintError(&LINDBCtrl); printf("Alive DBMS Linter\n"); printf("End Example\n"); }